在onActivityResult中的notifyDataSetChanged()之后未更新列表

时间:2015-04-01 21:20:39

标签: notifydatasetchanged

我有一些活动。其中一个必须使用simpleCursorAdapter显示listview。在onItemClick()中是其他Activity的方法startActivityForResult()(更改db中的数据)。在onActivityResult()方法中,我有notifyDataSetChanged(),但listview没有更新。 附:如果我在onResume()中编写notifyDataSetChanged(),那么一切正常。谢谢!

1 个答案:

答案 0 :(得分:0)

有时可能notifyDataSetChanged()似乎不适合您 - 这可能是因为您的适配器丢失了对您的列表的引用。

首次初始化Adapter时,它会引用您的arrayList并将其传递给超类。但是,如果您重新初始化现有的arrayList,则会丢失引用,从而丢失与Adapter的通信渠道。

创建新列表并向Adapter添加新列表时。始终遵循以下准则:

  1. 在全局声明时初始化arrayList
  2. 直接将List添加到适配器,不检查null和empty 价值观。直接将适配器设置为列表(不要检查任何适配器 条件)。适配器可确保您无论身在何处 对arrayList的数据进行更改,它会处理它,但永远不会松散 参考
  3. 始终修改arrayList本身的数据(如果您的数据是全新的 你之前可以致电adapter.clear()arrayList.clear() 实际上将数据添加到列表中)但是没有设置适配器,即If 新数据填充在arrayList而不仅仅是 adapter.notifyDataSetChanged()
  4. 坚持文档。