我在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循环后光标定位到正确的行。
答案 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);