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
[android]package com.example.sample;

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 クラスのものなので、そのサブクラスではどれでも利用可ってことよね?

めでたしめでたし。

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

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment