当基础数据发生更改时,基于SQlite数据库中的数据更新片段列表适配器

时间:2012-12-04 15:19:10

标签: android fragment listadapter

我有一个Android应用程序(在支持库下运行),其中MyListFragment类扩展了ListFragment。以下是创建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。 但我不知道应该用什么来检测这些变化。

1 个答案:

答案 0 :(得分:1)

取决于:

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

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