ViewIDを動的に指定する

On 2011年2月23日, in Android開発, by cliph

textviewに文字を設定したい場合等は、以下の様にするのが普通ですが、

TextView tv = (TextView)findViewById(R.id.textview01);

textviewのIDに当たる”R.id.textview01″を動的に指定したい事があります。

その場合、こうすれば良いみたいです。

int textview01_id = getResources().getIdentifer(“textview01″,”id”,”com.test.sample”);

TextView tv = (TextView)findViewById(textview01_id);

テストアプリで試した所上手く行ったので、多分あってると思います。

この手法を活用する事によって、
textviewが沢山ある様な場合に、繰り返し等でソースコードをスリム化出来るケースがあると思います。
クリフもCliphWeatherのソースにこれを適用して整理して見ようと思っています。

ただ、確実に処理のステップが増えるのでパフォーマンスへの悪影響は避けられない様に思います。。。。

メンテナンス性と、パフォーマンスどちらを取るか、
バランスを見て決めなければ行けなそうです。

尚、上記の例はviewのIDを取得していますが、
要はR.javaの中を検索するメソッドなので、drawableやStringなんかも同様にIDを取得する事が可能らしい。

<参考サイト>
http://d.hatena.ne.jp/hyoromo/20100123/1264221657
http://www.anddev.org/tinytut_-_get_resources_by_name__getidentifier_-t460.html
http://developer.android.com/intl/ja/reference/android/content/res/Resources.html#getIdentifier(java.lang.String, java.lang.String, java.lang.String)

Tagged with:  

6 Responses to ViewIDを動的に指定する

  1. 畠中宏基 より:

    よろしく

  2. さとうやすお

  3. tadachika.aruga より:

    ヨロシクね!

  4. Jaclyn より:

    My spouse and I stumbled over here coming from a dirnffeet page and thought I may as well check things out. I like what I see so now i am following you. Look forward to exploring your web page yet again.

コメントを残す

メールアドレスが公開されることはありません。