Обновление адаптера FragmentList, основанного на данных в базе данных SQlite, при изменении базовых данных


У меня есть приложение для android (работает в библиотеке поддержки), которое имеет класс mylistfragment extends 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 2

1 ответ:

Это зависит:

  • Если ваша БД всегда одинакова и вам нужно только обнаружить изменения в adapterAllEvents, вызовите notifyDataSetChanged () на adaper

  • Если ваши данные изменяются в БД, вы можете использовать CursorLoader и LoaderManager.LoaderCallbacks для получения объекта курсора для передачи в CursorAdapter. Вызовите restartLoader, когда ваши данные изменятся