2011-11-08 6 views
0

現在のアイテムタイプ(私の場合は1または2)を判断するには、onItemClickイベントでgetItemViewTypeを使用します。私はgetItemViewTypegetViewTypeCountを上書き: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について:

   @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

注意が含まれている必要があります - 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のアダプタをあなたが作成したアダプタクラスに設定しましたか? –

関連する問題