我正在使用ArrayAdapter作为我的listview,并且有一些我不太懂的东西。这是我的代码的一个例子
class ListAdapter extends ArrayAdapter<Item> {
public ListAdapter(Context context, ArrayList<Item> items) {
super(context, R.layout.list_item, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.list_item, null);
}
...some code here....
}
}
我的问题是:如果我已经在“超级”调用中在构造函数中设置了Id,为什么我需要在“getView”中扩展布局。在我通过“super”设置layout-Id之后,这个Id是存储在ArrayAdapter中的某个地方吗?所以我不明白超级电话中的这个“资源ID”是什么..
感谢您的解释:) 最诚挚的问候
答案 0 :(得分:1)
如果要在列表视图中显示与文本不同的内容,则需要覆盖getView
。您希望显示带有文本的图像的示例(您知道Whatsapp吗?它是列表视图)。
如果您不需要,可能根本不需要覆盖ArrayAdapter。只需按原样使用课程并停止。你可以使用你想要的任何对象,ArrayAdapter将使用传递的类的toString()
来显示文本。
ArrayAdapter<Items> adapter = new ArrayAdapter<Items> ();
listView.setAdapter (adapter);
使用Items.toString()
说出要以文字形式显示的内容。