2011-11-08 34 views
0

我想在onItemClick事件中使用getItemViewType來確定當前項目類型(在我的情況下是1或2)。我重寫getItemViewTypegetViewTypeCountonItemClick android getItemViewType

@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

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

      } 

對於curItemType在onItemClick我得到值2和3(不是我的0或1)可以解釋一些我爲什麼? 在getView方法curItemType是正確的(0或1)

感謝

+0

注意getItemViewType應在0和getViewTypeCount()之間的返回值 - 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方法

+0

轉換爲MyAdapter不是必需的。 –

+0

@Hakan Ozbay,謝謝你的回答,但我收到這個錯誤'方法getAdapter()未定義類型View',爲什麼? – Jovan

+0

@Jovan,您是否已將該視圖的適配器設置爲您所做的適配器類? –