2011-08-24 186 views
1

我顯示數據從SQLite的未來在ListActivity。用戶可以單擊一個列表元素,將其發送給更新數據庫的活動。設置Android的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循環後被定位到了正確的行。

+0

下面推薦'getListView()爲setSelection(INT位置)這兩個答案'讓我在正確的軌道上。實際上我最終將當前位置從ListActivity傳遞到更新Activity。更新Activity然後將當前位置傳遞迴ListActivity。這節省了對光標的循環,並且可以工作,因爲不會對數據庫表進行添加或刪除操作。 –

回答

3

您是否嘗試過在你的ListActivity使用getListView().setSelection(int position)?參數position的參數從0開始,因此它與id變量不同,但在while循環中,您可以從零開始計數,因爲您在遍歷Cursor並將其用作位置。

+0

謝謝@joel。不知何故,我錯過了API的那一部分! –

2

光標初始位置不考慮。你必須使用listView.setSelection(INT位置),並獲得位置根據您的ID:

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

謝謝@ njzk2。不知何故,我錯過了API的那一部分! –