setTag()
やオブジェクト型getTag()
のメソッドの主な目的は何ですかView
?
任意の数のオブジェクトを 1 つのビューに関連付けることができると考えるのは正しいでしょうか?
ベストアンサー1
類似したビューを多数生成するとします。OnClickListener
各ビューに個別に を設定できます。
button1.setOnClickListener(new OnClickListener ... );
button2.setOnClickListener(new OnClickListener ... );
...
onClick
次に、次のような同様のことを実行する場合でも、各ビューごとに一意のメソッドを作成する必要があります。
public void onClick(View v) {
doAction(1); // 1 for button1, 2 for button2, etc.
}
これは、 にはonClick
パラメータ a が 1 つしかなく、他の情報は囲んでいるスコープ内のインスタンス変数または final ローカル変数から取得する必要があるためです。本当に必要なのは、ビュー自体からView
情報を取得することです。
入力getTag
/ setTag
:
button1.setTag(1);
button2.setTag(2);
これで、すべてのボタンに同じ OnClickListener を使用できるようになりました。
listener = new OnClickListener() {
@Override
public void onClick(View v) {
doAction(v.getTag());
}
};
基本的には、ビューに記憶を残す方法です。