2

我有一个具有 MyListFragment 类扩展 ListFragment 的 android 应用程序(在支持库下运行)。这是创建 ListAdapter 的代码:

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);      
   DbHelperEvent dbHelper = new DbHelperEvent(getActivity());
   ArrayList<ReportEvent> events = new ArrayList<ReportEvent>();
   events = dbHelper.getAllEvents();
   dbHelper.close();

   this.adapterAllEvents = new ArrayAdapter<ReportEvent>(getActivity(), android.R.layout.simple_spinner_item, events);
   this.adapterAllEvents.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
   setListAdapter(adapterAllEvents);}

但底层数据随时可能发生变化,我需要检测到这种变化并更新 ListAdapter。但我不知道应该用什么来检测这些变化。

4

1 回答 1

1

这取决于:

  • 如果您的数据库始终相同,并且您只需要检测 adapterAllEvents 中的更改,请在 adaper 上调用 notifyDataSetChanged()

  • 如果您的数据在 DB 中发生变化,您可以使用 CursorLoader 和 LoaderManager.LoaderCallbacks 获取 Cursor 对象以传递给 CursorAdapter。当你的数据改变时调用 restartLoader

于 2012-12-04T15:39:57.153 回答