设置Android ListActivity的起始位置

时间:2011-08-24 12:29:44

标签: android android-listview simplecursoradapter

我在ListActivity中显示来自SQLite的数据。用户可以单击列表元素,将其发送给更新数据库的活动。

更新活动完成后,用户将被发送回原始的ListActivity。

当用户从ListActivity返回时,我希望ListView被定位以显示她刚刚更新的数据(例如,在可能的第一个位置)。

我尝试将Cursor定位为指向我想要显示的条目;但这似乎不起作用(请参阅下面的代码示例代码)。

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 个答案:

答案 0 :(得分:3)

您是否尝试在ListActivity上使用getListView().setSelection(int position)position参数从列表的0开始,因此它与您的id变量不同,但在您的while循环中,您可以从零开始计数,同时迭代Cursor并将其用作位置。

答案 1 :(得分:2)

不考虑光标初始位置。您必须使用listView.setSelection(int position),并根据您的id获取位置:

for (int position = 0; mDbCursor.moveToNext() && getId(mDbCursor) != id; position++) {}
setListAdapter(SimpleCursorAdapter);
getListView.setSelection(position);