了解用于Listview的ArrayAdapter

时间:2014-03-18 16:25:28

标签: android listview android-arrayadapter

我正在使用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”是什么..

感谢您的解释:) 最诚挚的问候

1 个答案:

答案 0 :(得分:1)

如果要在列表视图中显示与文本不同的内容,则需要覆盖getView。您希望显示带有文本的图像的示例(您知道Whatsapp吗?它是列表视图)。

如果您不需要,可能根本不需要覆盖ArrayAdapter。只需按原样使用课程并停止。你可以使用你想要的任何对象,ArrayAdapter将使用传递的类的toString()来显示文本。

ArrayAdapter<Items> adapter = new ArrayAdapter<Items> ();
listView.setAdapter (adapter);

使用Items.toString()说出要以文字形式显示的内容。