无法使用ArrayAdapter刷新数据

时间:2013-12-20 11:49:38

标签: android listview android-arrayadapter

我的数据是在全局变量ArrayList cells中定义的,而我的自定义ArrayAdapter包含对该变量的引用:

class CellAdapter extends ArrayAdapter<Cell> {

        CellAdapter() {
            super(context, 0, 0, cells);
        }
}

然后我有一种方法,通过调用clear()然后使用add()方法刷新单元格。完成后,我打电话给:

adapter.notifyDataSetChanged();

适配器应该仍然保存对我初始化它的全局变量的引用,对吧?无论如何,它不起作用。我做错了什么?

3 个答案:

答案 0 :(得分:1)

adapter.clear()正在调用cells.clear(),因为超类拥有对您ArrayList<Cell>的引用。他工作,但你正在填充适配器与空数据集。

答案 1 :(得分:0)

ArrayAdapter不会复制cells数组列表。每当您对cells数组中的对象进行修改时,您只需在其上调用notifyDataSetChanged即可。

如果您修改列表本身(特别是从列表中删除项目),您必须通知适配器,否则它将开始抛出异常。

答案 2 :(得分:0)

adapter.clear();

也正在清理你的单元格对象。

只是不要调用clear和addAll

如果您更新了单元格列表,则只需调用:

adapter.notifyDataSetChanged();

它会刷新