Настройка Android ListActivity стартовой позиции - PullRequest
1 голос
/ 24 августа 2011

Я отображаю данные, поступающие из 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.

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

Вы пытались использовать getListView().setSelection(int position) в своей ListActivity? Аргумент position для списка начинается с 0, так что это не то же самое, что ваша переменная id, но в вашем цикле while вы можете считать от нуля, пока вы итерируете курсор и используете его в качестве позиции.

2 голосов
/ 24 августа 2011

Начальная позиция курсора не учитывается. Вы должны использовать listView.setSelection (int position) и получить позицию в соответствии с вашим идентификатором:

for (int position = 0; mDbCursor.moveToNext() && getId(mDbCursor) != id; position++) {}
setListAdapter(SimpleCursorAdapter);
getListView.setSelection(position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...