2016-10-27 9 views
0

アイテムのリストビューを取得しました。各項目にはチェクボックスがあります。ここでアイテムがクリックされた場合、このチェックボックスの状態を変更したいと思います。リストビュー項目をクリックしたときに、チェックボックスのIDを取得するにはどうすればよいですか?OnItemClickリスナーのリストビュー項目内のチェックボックスのIDを取得

私はこのコードを持って:

cList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) { 
       Client currentClient = (Client) mAdapter.getItem(position); 

      } 
     }); 
+0

どのようなエラーが記録されますか? –

+0

@AmitaiFensterheim私は間違いなし。 – progNewbie

+1

チェックボックスのIDを取得する目的は何ですか?チェックされているかどうかを知る必要がある場合は、 'Client'オブジェクトにbooleanの' checked'(または任意の関連する名前)パラメータを追加し、アダプタ内の 'Checkbox'でそれを変更することができます。 – MohanadMohie

答えて

1

、我々はviewオブジェクト内のすべてのビューをループしてCheckBoxを見つけている:

cList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
     Client currentClient = (Client) mAdapter.getItem(position); 

     try { 
      ViewGroup group = (ViewGroup) view; 
      if(group != null) { 
       View currView; 
       for(int i = 0; i < group.getChildCount(); i++) { 
        currView = group.getChildAt(i); 
        if(currView instanceof CheckBox) { 
         CheckBox checkBox = (CheckBox) currView; // this is your checkbox 
         int checkboxId = checkBox.getId(); 
         // do something 
         break; 
        } else { 
         // these are all the other views (not checkbox) 
        } 
       } 
      } 
     } catch (Exception e) { 
      Log.e(TAG, e.toString()); 
     } 
    } 
}); 
-1

は、チェックボックスにこれを追加します。ここでは android:focusable="false" android:focusableInTouchMode="false"

+0

残念ながら、これは私の質問に対する答えではありません。 – progNewbie

0

try:

Class.mAdapter.getItem(position)

"クラス" - その中で宣言されたmAdapterするクラスの名前です。

+0

これは質問に答えません。 ListViewアイテムには多くのオブジェクトがあります。 OPは、その1つの特定の項目の 'CheckBox'だけを取得したいです。あなたのコードはListViewアイテム全体を返します –

関連する問題