0

我正在使用带有自定义 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 日

重复。

有些东西没有被破坏。在选择日期选项后,我使用稍微修改过的列表版本,因为这次我不对数据进行排序,所以没有数据重复

4

0 回答 0