我使用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());
}
发布于 2017-05-31 02:11:38
使您的listView无效
adapter.notifyDataSetChanged();
listView.invalidate();
发布于 2017-05-31 02:53:26
我猜当您试图通知数据集更改时,数据不会被传递到适配器。你能在你将数据添加到你的数组列表中的地方发布整个类代码吗?还有一件事,尝试在视图适配器中使用"ViewHolder“类。
发布于 2017-05-31 02:55:27
我找到问题了。
由于soe缺少附加数据,更新的项在Adapter.getView()
函数的早期导致异常。因此,函数的其余部分没有被调用,并将内容保留为空。
解决方案是不仅要更新适配器的列表,还要更新适配器所需的所有必要的附加数据。
https://stackoverflow.com/questions/44268885
复制相似问题