View の setTag() メソッドと getTag() メソッドの主な目的は何ですか? 質問する

View の setTag() メソッドと getTag() メソッドの主な目的は何ですか? 質問する

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());
    }
};

基本的には、ビューに記憶を残す方法です。

おすすめ記事