Android ListView无法正常刷新

时间:2017-05-30 17:58:01

标签: java android listview

我使用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());
}

enter image description here

3 个答案:

答案 0 :(得分:0)

使listView无效

adapter.notifyDataSetChanged();
listView.invalidate();

答案 1 :(得分:0)

我想当您尝试通知更改的数据集时,数据未传递给适配器。你可以在你的arraylist中添加数据的全部类代码吗? 另一件事是尝试使用" ViewHolder"适配器中用于视图的类。

答案 2 :(得分:0)

我发现了问题。

由于缺少其他数据,更新的项目在Adapter.getView()函数的早期导致异常。因此,函数的其余部分未被调用,并将内容留空。

解决方案不仅要更新适配器列表,还要更新适配器所需的所有必要附加数据。