我在整个应用程序中使用自定义字体(其中,顺便提一句,我沮丧地发现,必须用手动方式应用于每个控件!),我需要将其应用于列表视图.问题是,我无法看到我将列表字体中使用的textview设置为我的自定义字体(因为我从来没有实例化 – 这一切都由适配器照顾).
我最理想的是能够使用这样的适配器:
new ArrayAdapter(Context context,TextView textView,List<T> objects)
这样我可以做:textView.setTypeface,然后填充我的列表.有没有人知道有没有办法做这些事情呢?
解决方法
您不能这样做,因为您传递给ArrayAdapter的文本视图资源在每次使用时都会膨胀.
您需要创建自己的适配器并提供自己的视图.
适配器的一个例子可以是
public class MyAdapter extends BaseAdapter { private List<Object> objects; // obvIoUsly don't use object,use whatever you really want private final Context context; public CamAdapter(Context context,List<Object> objects) { this.context = context; this.objects = objects; } @Override public int getCount() { return objects.size(); } @Override public Object getItem(int position) { return objects.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position,View convertView,ViewGroup parent) { Object obj = objects.get(position); TextView tv = new TextView(context); tv.setText(obj.toString()); // use whatever method you want for the label // set whatever typeface you want here as well return tv; }
}
然后你可以这样设置
ListView lv = new ListView(this); lv.setAdapter(new MyAdapter(objs));
希望这应该让你走.