2011-11-08 2 views
0

현재 항목 유형 (내 경우 1 또는 2)을 결정하려면 onItemClick 이벤트의 getItemViewType을 사용하고 싶습니다. 나는 getItemViewTypegetViewTypeCount를 오버라이드 (override) :onItemClick의 android getItemViewType

onItemClick를 들어
@Override 
    public int getItemViewType(int position) { 
     //not last item 
     if (position != getCount() - 1) 
      return 0; 
     else 
      return 1; 

    } 

    @Override 
    public int getViewTypeCount() { 
     return 2; 
    } 

: onItemClick에서 curItemType를 들어

   @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       Integer curItemType = arg0.getAdapter().getItemViewType(arg2); 
       Log.i("curItemType",Integer.toString(curItemType)); 

      } 

나는 값 2와 3 (0 또는 1 내되지 않음) 일부 내 이유를 설명 할 수있는거야? curItemType가 올바른지 getView 방법 (0 또는 1)

감사

+0

주를 포함해야합니다 - 1. 귀하의 경우 0과 1입니다. –

답변

0

(당신은 실제로 당신이 만든 어댑터를 할 수 있도록 arg0를 어댑터 (부모)을 설정했는지 확인하시기 바랍니다가에 MyAdapter를 호출 할 수 있습니다 이 경우).

실제로 getAdapter() 결과를 캐스팅해야합니다. 어댑터로 작성한 클래스는 getItemViewType에 전화 할 때 안전 상태를 유지하기 위해 사용됩니다. 그래서 같이

:

public void onItemClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      MyAdapter adapter = (MyAdapter) arg0.getAdapter(); 
      Integer curItemType = adapter.getItemViewType(arg2); 
      Log.i("curItemType",Integer.toString(curItemType)); 

귀하의 MyAdapter 클래스는 당신의 getItemViewTypegetViewTypeCount 방법 getItemViewType는 0 getViewTypeCount() 사이의 값을 반환해야

+0

MyAdapter 로의 캐스트는 필요하지 않습니다. –

+0

@Hakan Ozbay, 답변 주셔서 감사합니다.하지만이 오류 메시지가 나타납니다. 'getAdapter() 메소드가 View 유형에 대해 정의되지 않았습니다.' – Jovan

+0

@ Jovan, 당신은 만든 어댑터 클래스가되도록 View의 어댑터를 설정 했습니까? –