setTag & getTag

Posted by muchag | Android |
初回投稿:2011-04-10 (日) 21:15:17 | 最終更新:2011-04-10 (日) 21:19:49

Button の onClick イベントでは、Button ビューそのものしか渡せないため
その次の処理に必要な引数を渡すことができない。

そこで Flex のときに用いた data プロパティ のようなものがないか
リファレンスをジロジロ見てみた。

あったあった♪ setTag & getTag

リファレンスの英語は今一理解できなかったけど

Tags can also be used to store data within a view ・・・

この部分でピンときてグーグル先生に聞いてみたら、
やっぱり期待した機能のようだった。

void | setTag (Object tag)

とのことなので、まずはオブジェクト作り。

MyObject.java
  1. package com.example.sample;
  2.  
  3. public class MyObject {
  4.    
  5.     public int myInt;
  6. }

 
次にボタンを配置したアクティビティクラスにて

  1. //フィールドにて宣言
  2. private Button myButton;
  3.  
  4. /* 省略 */
  5.  
  6. //情報格納インスタンスを生成
  7. MyObject myObject = new MyObject();
  8. myObject.myInt = 24; //値を格納
  9.  
  10. //ボタンインスタンスの生成
  11. myButton = new Button(this);
  12. //インスタンスの Tag へ情報を格納
  13. myButton.setTag(myObject);
  14. //ボタンインスタンスへリスナーを登録
  15. myButton.setOnClickListener(this);
  16.  
  17. /* 省略 */
  18.  
  19. //ボタンクリックイベントの処理
  20. public void onClick(View view) {
  21.     if (view == myButton) {
  22.             //Button に埋め込んだ情報オブジェクトを取得
  23.             MyObject myObject = (MyObject) myButton.getTag();
  24.             //情報オブジェクトから当該情報を取得
  25.             int myInt = myObject.myInt;
  26.     }
  27. }

見事に情報の受け渡しに成功!

この setTag & getTag メソッドは、Button クラス固有のものではなく
View クラスのものなので、そのサブクラスではどれでも利用可ってことよね?

めでたしめでたし。

Posted by muchag | Android |
初回投稿:2011-04-10 (日) 21:15:17 | 最終更新:2011-04-10 (日) 21:19:49

1件のコメント »

  1. Comment by Activate Avg — 2019/10/24 木曜日 @ 22:07:57

    McAfee’s secudity suites are slightly cheaper than Activate Avg‘s.

RSS feed for comments on this post. TrackBack URI

Leave a comment