我想在EditText
的顶部显示项目列表和ListView
,我的列表有5个项目,运行时程序只显示4个项目。代码如下:
if(position == 0) {
view = View.inflate(getActivity(), R.layout.item_search, null);
final EditText et_search = (EditText) view.findViewById(R.id.et_search);
return view;
}
Item item = items.get(position-1);
Log.i(TAG, "position="+position+", items.size()="+items.size()+", list.getCount()="+list.getCount());
.....
在这种情况下,只显示4项, 并且我还输出了输出:
: position=1, items.size()=5, list.getCount()=6
: position=2, items.size()=5, list.getCount()=6
: position=3, items.size()=5, list.getCount()=6
: position=4, items.size()=5, list.getCount()=6
从输出中我们可以看到它循环4次并且position-1
(从0到3)它不会转到下一个项目,
如果有人知道是什么问题请回复帖子。
提前谢谢!
答案 0 :(得分:1)
将getView()
修改为适配器可以正常工作
@Override
public int getCount() {
return items.size() + 1;
}
但这不是一个好方法。更好的方法是将EditText
添加到ListView
上方的布局代码中。在这种情况下,您无需添加位置检查。
答案 1 :(得分:0)
替换:
Item item = items.get(position-1);
使用:
Item item = items.get(position);
它会起作用。
答案 2 :(得分:0)
如果position == 0,它将返回......;
if(position == 0) {
view = View.inflate(getActivity(), R.layout.item_search, null);
final EditText et_search = (EditText) view.findViewById(R.id.et_search);
return view;
}
所以你只能看到log的计数是items.size() - 1;
你最好展示你的适配器,我认为list.getCount()也不对;