我正在使用带有自定义 BaseAdapter 的 ListActivity。实现的clear()
方法只清除列表onResume()
,但如果我重新填充适配器并通知数据已更改,它会保持清晰。
我认为不需要任何代码,但是...
ArrayList<String> thisWorks = DatabaseMethods.retrieveData();
populateAdapter();
---------------------------
ArrayList<String> thisAddsSameDataWithEveryIntentCall = sortByDate(DatabaseMethods.retrieveData());
populateAdapter();
我的理解是,它很可能与内存地址更改有关。但是,SQLite 给我的数据不是按顺序排列的,每次都必须重新排序,因为我想要连续的日期。
我认为通过对数据进行排序,它每次都使用不同的内存地址,而恢复活动时,它正在查找旧地址。
调用 Activity 时防止数据重复的技巧?
编辑
上面的 ArrayList thisWorks 将包含以下数据:
- 2013 年 1 月 9 日
- 2012 年 8 月 22 日
- 2012 年 7 月 26 日
如果我调用此活动,这些项目将填充 CustomAdapter。调用活动时,再次调用数据库函数(因为用户可能添加了数据),如果它没有更改,则使用相同的列表填充 CustomAdapter....一切都很好
上面的 ArrayList thisAddsSameDataWithEveryIntentCall 将在 SORTING 之前包含以下数据:
- 2013 年 1 月 9 日
- 2012 年 8 月 22 日
- 2012 年 7 月 26 日
排序后:
- 2012 年 7 月 26 日
- 2012 年 8 月 22 日
- 2013 年 1 月 9 日
如果我调用此活动,这些项目通常会在第一次填充 CustomAdapter。点击后退按钮,从堆栈中删除 Activity。点击按钮再次调用Activity:
- 2012 年 7 月 26 日
- 2012 年 8 月 22 日
- 2013 年 1 月 9 日
- 2012 年 7 月 26 日
- 2012 年 8 月 22 日
- 2013 年 1 月 9 日
重复。
有些东西没有被破坏。在选择日期选项后,我使用稍微修改过的列表版本,因为这次我不对数据进行排序,所以没有数据重复。