1

減価償却された manageCursor() メソッドではなく、CursorLoader を使用するようにコードを変更しました。

しかし、現在クリックされている位置でカーソルからフィールドを取得する方法がわかりません

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    return new SQLiteCursorLoader(getActivity(), new DatabaseHelper(getActivity()), "SELECT M.id as _id,  M.name as desc FROM myTable M", null);    
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

        // before I did, 
        // cursor.moveTo(position);
        // cursor.getInt(1);
        // WHat goes here?

確かに、IDを取得して、カーソルに既に含まれているものを再クエリする必要はありません。それは、この管理された概念のポイントの一部を無効にします。

特定の位置にあるフィールドにアクセスする方法が必要です。

4

1 に答える 1

3

これを行う適切な方法は、

l.getItemAtPosition(position);

アダプターはCursorAdapter(右?)であるため、これはカーソルです。次のことができます。

Cursor cursor = (Cursor) l.getItemAtPosition(position);

そして、moveToPosition()のことすら必要ありません。

l.getAdapter().getItem(position)これは、位置に配置されたカーソルである、と同等です。アダプタへの参照を取得して、

mCursorAdapter.getCursor();
于 2013-01-03T17:18:26.763 に答える