1

我刚刚更改了我的代码以使用 CursorLoader 而不是贬值的 manageCursor() 方法。

但不知道如何从当前点击位置的光标获取字段

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);

这是一个 Cursor,因为您的适配器是 CursorAdapter(对吗?),所以您可以这样做:

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

你甚至不需要 moveToPosition() 东西。

这相当于l.getAdapter().getItem(position),它是一个定位在位置的光标。您还可以参考适配器并调用

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