2012-02-19 2 views
1

에서 항상 null이 나는이 같은 CursorAdapter로 채우는거야하는 ListView 있습니다GetTag의() onListItemClick

목표는 클릭 한 목록 항목에서 ID를 얻는 것입니다

SimpleCursorAdapter.ViewBinder viewBinder = new SimpleCursorAdapter.ViewBinder() { 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
     if(columnIndex == cursor.getColumnIndex(MyTableColumns._ID)) 
     { 
      view.setTag(cursor.getInt(columnIndex)); 
     } 
     // some other stuff 
    } 
}; 
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.my_item_renderer, cursor, from, to); 
adapter.setViewBinder(viewBinder); 
:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    Object obj = v.getTag(); 
    int myId = Integer.parseInt(obj.toString()); 
} 

그러나 항상이 값은 null입니다. 나는 무엇을 간과하고 있는가? 지금은 숨겨진 텍스트 필드를 사용하고 있지만 잘못된 것을 알고 싶습니다.

답변

0

onListItemClick()은 목록에있는 행을 제공합니다. ViewBinder은이 행에있는 TextView에 값을 바인딩합니다. 따라서 setTag()을 호출하는 뷰는 getTag()을 호출 한 뷰와 동일하지 않습니다.

올바른보기에서 setTag()을 호출 할 수 있도록 SimpleCursorAdapter를 확장하거나 v의 첫 번째 하위보기를 onListItemClick()에 가져오고 그 태그를 가져올 수 있습니다.

0

태그를 설정할 때이 방법을 사용해 보셨습니까?

view.setTag(new Integer(cursor.getInt(columnIndex))); 
+0

setTag는 문자열 – DannyT

0

if 문은 단순히 false를 반환하므로 태그 값이 설정되지 않을 수 있습니까?

+0

만을 받아 들일 것입니다. 그러나 여기에 코드 스 니펫에 포함시키지 않았습니다. 실제 프로젝트에서 true를 반환합니다. – DannyT

관련 문제