我有一些活动。其中一个必须使用simpleCursorAdapter显示listview。在onItemClick()中是其他Activity的方法startActivityForResult()(更改db中的数据)。在onActivityResult()方法中,我有notifyDataSetChanged(),但listview没有更新。 附:如果我在onResume()中编写notifyDataSetChanged(),那么一切正常。谢谢!
答案 0 :(得分:0)
有时可能notifyDataSetChanged()
似乎不适合您 - 这可能是因为您的适配器丢失了对您的列表的引用。
首次初始化Adapter
时,它会引用您的arrayList
并将其传递给超类。但是,如果您重新初始化现有的arrayList
,则会丢失引用,从而丢失与Adapter
的通信渠道。
创建新列表并向Adapter
添加新列表时。始终遵循以下准则:
arrayList
。arrayList
的数据进行更改,它会处理它,但永远不会松散
参考adapter.clear()
和arrayList.clear()
实际上将数据添加到列表中)但是没有设置适配器,即If
新数据填充在arrayList
而不仅仅是
adapter.notifyDataSetChanged()
坚持文档。