Я пытаюсь использовать следующий подход:Как обновить ListView с новыми данными таблицы?
protected void onCreate(Bundle savedInstanceState) {
...
recordsCursor = dbHelper.fetchRecords1();
startManagingCursor(recordsCursor);
String[] from = new String[]{DbAdapter.KEY_BL_SENDER, DbAdapter.KEY_BL_READ};
int[] to = new int[]{R.id.text1, R.id.background};
adapter = new SimpleCursorAdapter(this, R.layout.row, recordsCursor, from, to);
setListAdapter(adapter);
}
public boolean onOptionsItemSelected(MenuItem item) {
...
case R.id.list1:
recordsCursor = dbHelper.fetchRecords1();
String[] fromBL = new String[]{DbAdapter.KEY_BL_SENDER, DbAdapter.KEY_BL_READ};
int[] toBL = new int[]{R.id.text1, R.id.background};
Log.i(TAG, "count: "+recordsCursor.getCount()); // returns 475
adapter = new SimpleCursorAdapter(this, R.layout.row, recordsCursor, fromBL, toBL);
adapter.changeCursor(recordsCursor);
adapter.notifyDataSetChanged();
return true;
case R.id.list2:
recordsCursor = dbHelper.fetchRecords2();
String[] from = new String[]{DbAdapter.KEY_W_SENDER};
int[] to = new int[]{R.id.text1};
Log.i(TAG, "count: "+recordsCursor.getCount()); // returns 0
adapter = new SimpleCursorAdapter(this, R.layout.row, recordsCursor, from, to);
adapter.changeCursor(recordsCursor);
adapter.notifyDataSetChanged();
return true;
Но не обновляет список. Когда показаны записи из fetchRecords1
, они не заменяются записями из другой таблицы. Что не так в моем коде?
где вы приписываете этот адаптер в своем списке? – Dyna
@ Dyna, я обновил свой код, чтобы отразить его –
Ответ, который дал вам @blahdiblah, решит вашу проблему! – Dyna