1

SQLite からのデータを ListActivity に表示しています。ユーザーはリスト要素をクリックして、DB を更新するアクティビティに移動できます。

更新アクティビティが完了すると、ユーザーは元の 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ループを終了した後、カーソルは正しい行に配置されていると思います。

4

2 に答える 2

3

getListView().setSelection(int position)ListActivityで使用してみましたか?引数はリストのposition0から始まるため、変数と同じではありませんidが、whileループでは、カーソルを反復処理してそれを位置として使用するときに、ゼロから数えることができます。

于 2011-08-24T12:43:02.457 に答える
2

カーソルの初期位置は考慮されません。listView.setSelection(int position)を使用して、IDに従って位置を取得する必要があります。

for (int position = 0; mDbCursor.moveToNext() && getId(mDbCursor) != id; position++) {}
setListAdapter(SimpleCursorAdapter);
getListView.setSelection(position);
于 2011-08-24T12:47:08.137 に答える