2013-01-03 36 views
1

我剛更改了我的代碼以使用CursorLoader而不是折舊的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和重新查詢什麼光標已經包含得到光標領域。 這會破壞這個管理概念的某些觀點。

必須有辦法訪問給定位置上的字段。

+0

什麼是你的sqlitecursorloader? – njzk2

+0

另外,getInt(1)看起來很奇怪,考慮1是您的案例中的名稱列。 – njzk2

+0

@ njzk2我只是把它作爲一個簡單的例子。因爲無論如何它都被註釋掉了。還有很多其他領域。 sqlitecursorLoader是針對sqlite數據庫的Cursorloader類的Commonwares擴展。它做同樣的事情。 – Doomsknight

回答

3

這樣做的正確方法是使用

l.getItemAtPosition(position); 

這是一個遊標,因爲你的適配器是一個CursorAdapter(右?),所以你可以這樣做:

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

和你甚至不需要moveToPosition()的東西。

這相當於l.getAdapter().getItem(position),它是一個位於光標處的光標。你也可以有適配器參考,並調用

mCursorAdapter.getCursor(); 
+0

看起來不錯。明天會測試它,謝謝!我知道它應該是直截了當的,我似乎無法找到API。這很乾淨。並且沒有範圍光標是空白的。 – Doomsknight

+0

是否有類似於從'public boolean onContextItemSelected(MenuItem item)'獲取項目光標? – Doomsknight

+0

我會假設上下文菜單顯示在選定的項目,因此listView.getSelectedItem()應該工作。 – njzk2