1. ホーム
  2. android

[解決済み] ViewのsetTag() getTag()メソッドの主な目的は何ですか?

2022-02-17 22:33:38

質問

などのメソッドは、主にどのような目的で使用されているのでしょうか。 setTag()getTag()View 型オブジェクトを使用するのですか?

1つのViewにいくつでもオブジェクトを関連付けることができるという考え方は正しいでしょうか?

どのように解決するのですか?

例えば、似たようなビューを大量に生成するとします。このとき 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 はパラメータが1つしかなく View 他の情報は、インスタンス変数や、スコープを囲む最終ローカル変数から取得する必要があります。私たちが本当に欲しいのは ビュー自身から .

入る getTag / setTag :

button1.setTag(1);
button2.setTag(2);

これで、すべてのボタンに同じOnClickListenerを使用できるようになりました。

listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        doAction(v.getTag());
    }
};

これは基本的に、ビューに 思い出 .