2

我必须更改自定义列表适配器上的字体。我有一个问题,因为我无法获得当前的上下文。

getassets() not exist for the class
getApplicationcontext()  not exist for the class
getBaseContext()  not exist for the class

我正在尝试从视图中获取上下文,没有错误,但字体没有改变

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        Context  context = convertView.getContext();
//or
       Context  context2 = parent.getContext();

在我写的代码之后

 bold = Typeface.createFromAsset(context.getAssets(), "fonts/Jennifer-Lynne.ttf");
        italic = Typeface.createFromAsset(context.getAssets(), "fonts/helvetica-italic.ttf");
        holder.titoloView.setTypeface(bold);
        holder.autoreView.setTypeface(italic);

主意?

4

2 回答 2

0

将 Context 传递给您的 CustomListAdapter 类构造函数,并使用它从资产中获取您的字体。在初始化 ViewHolder 视图时设置字体(当 getView 中的 convertView 为空时)。

于 2013-07-19T10:42:44.773 回答
0

这是正确的代码(资产文件夹上的字体)

全局变量

Typeface tf, bold, italic;
   Context prova;

我设置上下文的方法

public CopyOfCustomListAdapterLele(Context context, ArrayList listData) {
        this.listData = listData;
        layoutInflater = LayoutInflater.from(context);
        prova = context;
    }

以及字体的设置

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;


        bold = Typeface.createFromAsset(prova.getAssets(), "fonts/Jennifer-Lynne.ttf");



        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.singolopunto, null);
            holder = new ViewHolder();
            holder.titoloView = (TextView) convertView.findViewById(R.id.textView1); //titolo canzone

            holder.imageView = (SmartImageView) convertView.findViewById(R.id.imageView2); //immagine
            holder.free = (ImageView) convertView.findViewById(R.id.imageView3); //immagine free

            holder.titoloView.setTypeface(bold);


...
于 2013-07-19T13:48:02.823 回答