[解決済み] 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());
}
};
これは基本的に、ビューに 思い出 .
関連
-
[解決済み】「ArrayAdapterはリソースIDがTextViewであることが必要」XMLの問題点
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】Android "ビュー階層を作成した元のスレッドだけが、そのビューに触れることができる"
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] AndroidでstartActivityForResultを管理する方法
-
[解決済み] ViewPager PagerAdapter がビューを更新しない
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】Android Studioです。jarをライブラリとして追加しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】ビットマップを保存する場所について
-
[解決済み】findViewByIDがnullを返す。
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] Mockito lenient() を使用する場合
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。
-
[解決済み] 複数のデバイスを接続しているときにADB Shellを使用するには?error: more than one device and emulator "で失敗します。