2015-03-22 4 views
0

Как обновить список? Как обновить представление списка можно с помощью функции notifyDatasetchanged для обновления списка?Как обновить ListView?

private void updateUI() { 
    helper = new TaskDBHelper(MainActivity.this); 
    SQLiteDatabase sqlDB = helper.getReadableDatabase(); 
    Cursor cursor = sqlDB.query(TaskContract.TABLE, 
      new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK}, 
      null,null,null,null,null); 

    SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(
      this, 
      R.layout.task, 
      cursor, 
      new String[]{TaskContract.Columns.TASK}, 
      new int[]{R.id.taskTextView}, 
      0 
    ); 
    this.setListAdapter(listAdapter); 
} 
+0

Добро пожаловать. Пожалуйста, пометьте свой вопрос более подробно, например, язык, возможно, платформу, на которой вы работаете – Wain

+1

Не совсем понятно, что вы просите. Просто вызовите 'notifyDatasetChanged()' всякий раз, когда вы меняете модель. Вы также можете просто перезаписать текущую модель, прикрепленную к «ListAdapter», каждый раз, когда данные меняются, но снова вызовет «setListAdapter (listAdapter)» с новыми данными из «курсора». – Darwind

+0

Возможный дубликат [Как обновить список просмотров Android?] (Http://stackoverflow.com/questions/2250770/how-to-refresh-android-listview) – Lokesh

ответ

0

Как и в предыдущих ответах сказал, вы должны просто позвонить notifyDataSetChanged() всякий раз, когда вы предполагаете данные изменились или если у вас есть какой-то другой способ обнаружения этого через функцию обратного вызова и т.д. Для того, чтобы воссоздать адаптер кажется напрасной тратой времени и памяти в зависимости от того, сколько данных вы сохранили, поскольку все данные необходимо будет скопировать в какой-то момент.

0

функция notifyDataSetChanged относится к адаптеру. Поэтому вы должны называть его адаптером, когда ваша модель данных изменилась. Пример:

onEvent() {listAdapter.notifyDataSetChanged();}