2011-06-25 11 views
0

同じアクティビティで2つのリストビューがあります。これらは両方とも、これをトリガー:onItemClick 2つのリストビューの問題

public void onItemClick(AdapterView adapter, View v, int position, long arg3) 

どのように私はこのイベントハンドラから選ばれたリストチェックしますか? また、adapter == listAの場合は、そのリストのチェックボックスを選択し、選択/選択解除する必要があります。ここで私の活動の中でこれをどうやってやるのですか?

多分何かのように:v.myCheckBox.setChecked(false) < - 明らかにそれは動作しません。

注:私はベースアダプターから継承する2つのカスタムアダプターを使用しています。

checkbox = (Checkbox) view.findViewById(R.id.yourcheckboxid); 
checkbox.setChecked(false); 

ビューを作成したかを知るための最も簡単な方法は、アダプターによって作成されたビューのTagフィールドに識別子のいくつかの種類を格納することです: - チェックボックスを取得するための

+1

私はあなたが*アダプターに基づいてそれを見つけ出すことができると思うが、それはあなたがものを過度にしているようだ。 2つの 'OnItemClickListeners'を宣言するだけではどうですか? – dmon

+0

ここでは2つの異なる質問を投稿しました。チェックされた項目を持つリストがある場合は、ListViewの 'setChoiceMode'メソッドと' CHOICE_MODE_MULTIPLE'を見てください。 – adamp

答えて

1

は、それはそのようなものを使用するのが最善です(View.setTag()メソッド)。これは、アダプタのgetViewメソッドで新しいビューが作成されたときに設定する必要があります。次にview.getTag()から、それを作成したアダプタを確認し、適切に反応します。

あなたが書いたことから、あなたはそれを別の方法で行うべきです(とにかくアダプターを継承する場合)。お使いのアダプタの階層がある場合:

A -> B1 
    \ 
    B2 

そして、あなたが唯一のB1で作成されたビュー内のチェックボックスを持っている、あなたはB1にそのような何かを得る必要があります。

@Override 
public void onItemClick(AdapterView adapter, View v, int position, long arg3) { 
    super.onItemClick(adapter,v,position,arg3); 
    checkbox = (Checkbox) view.findViewById(R.id.yourcheckboxid); 
    checkbox.setChecked(false); 
    ... any other custom handling for list handled by B1 
} 
+0

ありがとう!私はonItemClickのビューからチェックボックスをつかむことができず、私はsetTag()も認識しませんでした。どうもありがとう!これは私の問題を完全に解決しました。 – spentak

+0

良い....幸せに役立つ! –

0

パスをユーザーに表示され確認することview.getId ()

関連する問題