setTag & getTag
Button の onClick イベントでは、Button ビューそのものしか渡せないため
その次の処理に必要な引数を渡すことができない。
そこで Flex のときに用いた data プロパティ のようなものがないか
リファレンスをジロジロ見てみた。
リファレンスの英語は今一理解できなかったけど
Tags can also be used to store data within a view ・・・
この部分でピンときてグーグル先生に聞いてみたら、
やっぱり期待した機能のようだった。
void | setTag (Object tag)
とのことなので、まずはオブジェクト作り。
public class MyObject {
public int myInt;
}[/android]
次にボタンを配置したアクティビティクラスにて
[android]//フィールドにて宣言
private Button myButton;
/* 省略 */
//情報格納インスタンスを生成
MyObject myObject = new MyObject();
myObject.myInt = 24; //値を格納
//ボタンインスタンスの生成
myButton = new Button(this);
//インスタンスの Tag へ情報を格納
myButton.setTag(myObject);
//ボタンインスタンスへリスナーを登録
myButton.setOnClickListener(this);
/* 省略 */
//ボタンクリックイベントの処理
public void onClick(View view) {
if (view == myButton) {
//Button に埋め込んだ情報オブジェクトを取得
MyObject myObject = (MyObject) myButton.getTag();
//情報オブジェクトから当該情報を取得
int myInt = myObject.myInt;
}
}[/android]
見事に情報の受け渡しに成功!
この setTag & getTag メソッドは、Button クラス固有のものではなく
View クラスのものなので、そのサブクラスではどれでも利用可ってことよね?
めでたしめでたし。