2012-12-03 1 views
0

ListViewSimpleCursorAdapter이고 나는 ListView에서 ID를 얻는 방법을 궁금해합니다. 나는이 재정의 방법이의 당신의 위치를 ​​줄 것이다이특정 ID가있는 행에 대한 ListView의 위치 가져 오기

lv.performItemClick(lv, pos, lv.getItemIdAtPosition(pos)); 
+0

질문에 약간의 차이가 있습니다. 로컬 데이터베이스에서 _id를 사용하여 ListView에서 항목의 위치 번호를 가져 오시겠습니까? 아니면 다른 방법으로? –

+0

itemClickListener가 id를 사용하지 않는다면 안전하게 무시해도됩니다 (-1 등) – njzk2

+0

테이블에서 _id ("_id"라고 함)를 사용하고 싶습니다 – Foenix

답변

6

으로 반복을 클릭 해당 ID :

if (cursor.moveToFirst()) { 
    while (!cursor.isAfterLast) { 
     if (cursor.getLong(/*the index of the _id column*/) == theTargetId) { 
       theWantedPosition = cursor.getPosition(); 
       break; 
     } 
     cursor.moveToNext(); 
    } 
} 
lv.performItemClick(lv, theWantedPosition, lv.getItemIdAtPosition(theWantedPosition)); 
+0

대단히 감사합니다! 그것은 나에게 좋다! !! – Foenix

+0

짧은 버전은 adapter.getItemId (pos)를 비교하여 0..adapter.getCount()에서 pos를 반복하는 것입니다. (덜 효율적 일지라도) – njzk2

+0

@ njzk2'getItemId()'를 사용하여 가질 때까지 각 위치를 테스트 할 수 있습니다 일치하지만 기본적으로'getItemId'와 동일한 코드는'Cursor'를 매개 변수로 제공된 위치로 이동시킵니다. 그러나 내 코드는 여분의 래퍼 메서드를 호출 할 필요가없는 오버 헤드없이 (가장 중요하지는 않지만)이 작업을 수행합니다. – Luksprog

0

같은 목록의 특정 행에 클릭을 수행하는 데 필요한 SimpleCursorAdapter 체크에 사용하여 Cursor을 통해 목록보기

@Override 
     protected void onListItemClick(ListView l, View v, int position, long id) { 
    } 
+0

이 위치를 클릭 할 수 없습니다. 이것은 새로운 기능입니다. , 단지 삽입 된 선. – Foenix