2

我在为我的 ListView 设置自己的字体时遇到问题,我不知道如何使用自己的 Adapter 类以及我需要什么 xml(除了我放置 ListView 的那个)。我希望(在 ListView 中)仅用于具有自己字体的居中文本。那是我的适配器:

public class MyAdapter extends BaseAdapter {

private String[]       objects; // no objects just String array
private final Context   context;

public MyAdapter(Context context, String[] objects) {
    this.context = context;
    this.objects = objects;
}

@Override
public int getCount() {
    return objects.length;
}

@Override
public Object getItem(int position) {
    return objects[position];
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    Object obj = objects[position];

    TextView tv = new TextView(context);
    tv.setText(obj.toString());
    Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/kolejRogFont.ttf");
    tv.setTypeface(tf);

    return tv;
}
}

它在 Lista.java 中调用

ListView lv = new ListView(this);
    lv.setAdapter(new MyAdapter(this, listview_array));

代码来自 StackOverFlow 上的另一个主题。

  1. 我在线收到错误(未定义的方法):

    字体 tf = Typeface.createFromAsset(getAssets(),"fonts/kolejRogFont.ttf");

2.屏幕上什么都没有出现。我应该为 ListView 布局制作 XML 吗?它应该包含什么?

4

3 回答 3

5

将 MyAdapter 代码更改为:

public class MyAdapter extends BaseAdapter {

Typeface tf;
private String[]       objects; // no objects just String array
private final Context   context;

public MyAdapter(Context context, String[] objects) {
    this.context = context;
    this.objects = objects;
    tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");
}
////Your code ...

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    Object obj = objects[position];

    TextView tv = new TextView(context);
    tv.setText(obj.toString());
    tv.setTypeface(tf);
    return tv;
}
}
于 2012-10-13T01:11:21.820 回答
1

getAssets()来自Context,因此它未定义到您的适配器。尝试使用这个:

Typeface tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");

编辑:作为旁注,我会将该行移至构造函数并设置tf为类变量。确实没有必要在每次获得视图时都加载字体。

于 2012-10-13T01:09:35.747 回答
0

关于为列表视图设置边距的答案,您应该在 list_view_items.zml 中设置边距。例如,在您的线性布局中设置边距或填充。

于 2016-02-22T12:57:41.723 回答