当我在列表视图中添加 header 时,我需要执行 position - 1 来访问后端列表
When I add a header in a listview I need to do position - 1 to access the backend list
我有一个 ListFragment
和一个自定义 ArrayAdapter
。
我愿意:
getListView().addHeaderView(inflatedHeader, null, false);
CustomAdapter adapter = new CustomAdapter(dataArrayList);
setListAdapter(adapter);
它有效,但我注意到在适配器的 getView
方法中它被调用时位置从 0 开始,而 onListItemClick
项目当我单击我需要的列表元素时做position - 1
从我传入的dataArrayList
中得到对应的item.
所以基本上我在 header 之后单击列表的第一个元素,然后我进入 onListItemClick
位置 == 1,因此我需要在方法中执行 getListAdapter().getItem(position - 1)
。
这是它应该如何工作还是我做错了什么?
您应该在您的项目点击侦听器中使用 getItemAtPosition(int position)
而不是 getItem(int position)
,这已经考虑到页眉和页脚视图
我有一个 ListFragment
和一个自定义 ArrayAdapter
。
我愿意:
getListView().addHeaderView(inflatedHeader, null, false);
CustomAdapter adapter = new CustomAdapter(dataArrayList);
setListAdapter(adapter);
它有效,但我注意到在适配器的 getView
方法中它被调用时位置从 0 开始,而 onListItemClick
项目当我单击我需要的列表元素时做position - 1
从我传入的dataArrayList
中得到对应的item.
所以基本上我在 header 之后单击列表的第一个元素,然后我进入 onListItemClick
位置 == 1,因此我需要在方法中执行 getListAdapter().getItem(position - 1)
。
这是它应该如何工作还是我做错了什么?
您应该在您的项目点击侦听器中使用 getItemAtPosition(int position)
而不是 getItem(int position)
,这已经考虑到页眉和页脚视图