无法显示ListView的最后一项

时间:2014-08-01 05:28:07

标签: android listview

我想在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)它不会转到下一个项目, 如果有人知道是什么问题请回复帖子。 提前谢谢!

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()也不对;