我使用ListView来显示我的项目。当项目更改时,我更新适配器列表并调用notifyDataSetChanged()
:
MyAdapter adapter = (MyAdapter) myListView.getAdapter();
if(adapter == null) {
adapter = new MyAdapter(this, itemList);
myListView.setAdapter(adapter);
}
adapter.notifyDataSetChanged();
这似乎有效,因为我的ListView会显示更多项目,但列表中的新项目无法正常显示。
这些项目不显示任何信息。似乎适配器没有刷新这些新项目。
适配器看起来像这样(简化):
public View getView(int position, View convertView, ViewGroup parent) {
Point point = getItem(position);
if (convertView == null)
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_point, parent, false);
TextView firstLine = (TextView) convertView.findViewById(R.id.firstLine);
firstLine.setText(point.getNumber());
}
答案 0 :(得分:0)
使listView无效
adapter.notifyDataSetChanged();
listView.invalidate();
答案 1 :(得分:0)
我想当您尝试通知更改的数据集时,数据未传递给适配器。你可以在你的arraylist中添加数据的全部类代码吗? 另一件事是尝试使用" ViewHolder"适配器中用于视图的类。
答案 2 :(得分:0)
我发现了问题。
由于缺少其他数据,更新的项目在Adapter.getView()
函数的早期导致异常。因此,函数的其余部分未被调用,并将内容留空。
解决方案不仅要更新适配器列表,还要更新适配器所需的所有必要附加数据。