2013-01-03 6 views
1

필자는 감가 상각 된 manageCursor() 메소드가 아니라 CursorLoader를 사용하도록 코드를 변경했습니다. 선택된 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); 

당신을 위치()로 이동하지 않아도됩니다.

이것은 l.getAdapter().getItem(position)과 동일하며, 커서는 제자리에 위치합니다. 어댑터에 대한 참조가있을 수도 있습니다.

mCursorAdapter.getCursor(); 
+0

나에게 잘 어울립니다. 내일 감사합니다! 나는 그것이 곧장 앞으로 있어야한다는 것을 알았고, 나는 API를 찾지 못했을 뿐이다. 이것은 훨씬 깔끔합니다. 그리고 커서가 비어있는 범위가 없습니다. – Doomsknight

+0

'public boolean onContextItemSelected (MenuItem item)'에서 항목 커서를 가져 오는 것과 비슷한 것이 있습니까? – Doomsknight

+0

컨텍스트 메뉴가 선택된 항목에 표시된다고 가정하므로 listView.getSelectedItem()이 작동해야합니다. – njzk2