Android 了解用于Listview的ArrayAdapter

Android 了解用于Listview的ArrayAdapter,android,listview,android-arrayadapter,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);

我正在将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....
            }
       }
class ListAdapter扩展了ArrayAdapter{
公共ListAdapter(上下文、ArrayList项){
super(上下文、R.layout.list\u项目、项目);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
拉平机vi;
vi=LayoutInflater.from(getContext());
v=vi.充气(R.布局.列表项,空);
}
…这里有一些代码。。。。
}
}
我的问题是:如果我已经在“super”调用的构造函数中设置了布局的Id,为什么我需要在“getView”中膨胀布局。?在我通过“super”设置布局Id后,该Id是否存储在ArrayAdapter中的某个位置?所以我不明白super调用中的“资源id”是什么

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

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

如果不需要它,可能根本不需要重写ArrayAdapter。只需按原样使用类,然后停止。您可以使用任何想要的对象,ArrayAdapter将使用传递的类的
toString()
来显示文本

ArrayAdapter<Items> adapter = new ArrayAdapter<Items> ();
listView.setAdapter (adapter);
ArrayAdapter适配器=新的ArrayAdapter();
listView.setAdapter(适配器);

使用
Items.toString()
说出要显示为文本的内容。

您好,谢谢。我知道我需要覆盖它以显示自定义内容。但我不明白的是,“super()”中的资源Id的一个参数,如果它从未使用过的话。。即使它是相同的,我会在以后的getView()中膨胀它被默认的getView方法使用。如果您不重写它,您已经有了一个工作的getView。您正在重写getView。您会注意到,在构造函数中传递的值实际上完全被忽略。但是,您可以使用类似于
v=super.getView(…)
的功能,而不需要自己调用充气。