Я отображаю данные, поступающие из SQLite, в ListActivity. Пользователь может щелкнуть элемент списка, который отправляет его в действие, которое обновляет БД.
Как только активность обновления завершена, пользователь возвращается к исходной активности ListActivity.
Когда пользователь возвращается из ListActivity, я хотел бы, чтобы ListView располагался для отображения только что обновленных данных (например, в первой возможной позиции).
Я попытался расположить курсор так, чтобы он указывал на запись, которую я хочу отобразить; но это, похоже, не работает (см. код ниже для примера кода).
protected void onResume() {
super.onResume();
mDbCursor = mDbAdapter.getCursor();
long id = getIntent().getLongExtra(FIRST_ID, -1); // Id of updated row.
while (mDbCursor.moveToNext() && getId(mDbCursor) != id) {
}
.
. calling setListAdapter(SimpleCursorAdapter);
.
}
Я думаю, что курсор позиционируется в правильную строку после выхода из цикла while.
getListView().setSelection(int position)
, привели меня на правильный путь. На самом деле я передал текущую позицию из ListActivity в действие обновления. Затем активность обновления передает текущую позицию обратно в ListActivity. Это избавляет от зацикливания курсора и будет работать, потому что в таблицу БД не добавляются и не удаляются. - person Frank Harper   schedule 24.08.2011