更新Arrayadapter中的数据

Ant*_*Ant 13 java android android-widget android-arrayadapter

我有这个问题,我有

private ArrayList<CustomItem> items; 
private ArrayAdapter<CustomItem> arrayAdapter;
Run Code Online (Sandbox Code Playgroud)

我显示项目中的数据,我在listview中看到的数据,现在我想更新数据并查看这些新数据

if (!items.isEmpty()) {
    items.clear(); // i clear all data
    arrayAdapter.notifyDataSetChanged(); // first change
    items = getNewData();// insert new data and work well
    arrayAdapter.notifyDataSetChanged();  // second change                                      
}
Run Code Online (Sandbox Code Playgroud)

在第一次更改我看到数据被清理,但在第二次更改我没有在列表视图中看到新数据,我检查,该项目不会清空

我不知道错误在哪里,你能帮助我吗?最好的评论安东尼奥

met*_*hen 15

这是我用新数据更新适配器的方法:

            if (arrayAdapter == null) {
                arrayAdapter = new CustomArrayAdapter(getActivity(), data);
                listview.setAdapter(userAutoCompleteAdapter);
            } else {
                arrayAdapter.clear();
                arrayAdapter.addAll(newData);
                arrayAdapter.notifyDataSetChanged();
            }
Run Code Online (Sandbox Code Playgroud)

  • ArrayAdapter.addAll() 已经调用了notifyDataSetChanged()。所以你实际上在这里调用了两次notifyDataSetChanged()。 (3认同)

azg*_*fer 12

假设getNewData()函数返回ArrayList<CustomItem>,您可以更改该行:

items=getNewData();
Run Code Online (Sandbox Code Playgroud)

items.addAll(getNewData());
Run Code Online (Sandbox Code Playgroud)

看看是否有效?