2012-06-02 4 views
0

ListView으로 채워지는 ArrayAdapter 사용자 정의를 작성했습니다. 어댑터의 데이터는 서버에서 가져온 POJO 목록입니다. 각 POJO에는 서버가 제공 한 고유 한 ID가 있으며이 ID에 영향을주지 않습니다. ID는 내부 용으로 만 사용되며 사용자가 ListView에 표시되지 않음을 의미합니다.Android : ListView의 onItemClick 수신기 - 항목을 식별하는 방법?

내 의도 : 사용자가 목록의 항목을 클릭하면 ID를 서버에 다시 전달하려고합니다. 첫 번째 단계는 만들 수있을 것 인 onItemClickListener :

내 문제가
ListView lv = getListView(); 
lv.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void OnItemClick(AdapterView<?> parent, View view, int position, long id) { 

    // call the server in a new thread 

    // BUT: how do I get the POJO id from this position? 

    } 
}); 

: 나는 POJO의 ID를 얻는 방법을 모르겠어요. 이후 그것은 사용자에게 표시되지 않습니다, 나는 TextView에서 내가 청취자에 전달 얻을 수 없습니다. 다른 매개 변수 - 위치 및 ID - 이 아닌도 내가 필요한 것 같습니다. 설명 :

  • 위치 : 어댑터의보기 위치.
  • id : 클릭 한 항목의 행 ID입니다.

내가 무슨 뜻인지 알기 바란다. 고맙습니다!

답변

3

귀하의 어댑터의 작동 방식에 따라 달라질 수 있습니다. id 매개 변수는 어댑터에 해당하는 항목 중 하나에 해당합니다. id어댑터의 작동 방식을 기반으로 클릭 한 뷰가 나타내는 원래 논리 항목을 검색 할 수 있습니다.

+0

두 분 모두 덕분에, 너무 쉽습니다. 죄송합니다. – alapeno

4

parent.getItemIdAtPosition(int position)이 색인에서 pojo 객체를 제공합니다.

2
@Override 
public void OnItemClick(AdapterView<?> parent, View view, int position, long id) { 

    Object item = parent.getAdapter().getItem(position); 
} 
+0

이것은 나를 위해 null을 반환했습니다. 나는 Pulltorefresh listview를 사용한다. – MSaudi

+0

이것은 어댑터의'getItem (int)'메소드가 주어진 위치에 대해 null을 반환한다는 것을 의미한다. –

관련 문제