我刚刚更改了代码以使用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并重新查询游标已包含的内容。 这将打败这个管理概念的一些观点。
必须有办法访问给定位置的字段。
答案 0 :(得分:3)
这样做的正确方法是使用
l.getItemAtPosition(position);
这是一个Cursor,因为你的适配器是一个CursorAdapter(对吧?),所以你可以这样做:
Cursor cursor = (Cursor) l.getItemAtPosition(position);
你甚至不需要moveToPosition()的东西。
这相当于l.getAdapter().getItem(position)
,它是位于位置的光标。您也可以引用适配器并调用
mCursorAdapter.getCursor();