我的数据是在全局变量ArrayList cells
中定义的,而我的自定义ArrayAdapter
包含对该变量的引用:
class CellAdapter extends ArrayAdapter<Cell> {
CellAdapter() {
super(context, 0, 0, cells);
}
}
然后我有一种方法,通过调用clear()
然后使用add()
方法刷新单元格。完成后,我打电话给:
adapter.notifyDataSetChanged();
适配器应该仍然保存对我初始化它的全局变量的引用,对吧?无论如何,它不起作用。我做错了什么?
答案 0 :(得分:1)
adapter.clear()
正在调用cells.clear()
,因为超类拥有对您ArrayList<Cell>
的引用。他工作,但你正在填充适配器与空数据集。
答案 1 :(得分:0)
ArrayAdapter
不会复制cells
数组列表。每当您对cells
数组中的对象进行修改时,您只需在其上调用notifyDataSetChanged
即可。
如果您修改列表本身(特别是从列表中删除项目),您必须通知适配器,否则它将开始抛出异常。
答案 2 :(得分:0)
adapter.clear();
也正在清理你的单元格对象。
只是不要调用clear和addAll
如果您更新了单元格列表,则只需调用:
adapter.notifyDataSetChanged();
它会刷新