2015年7月9日木曜日

R.id.hoge とかのリソースを動的に読み込む方法

以前の記事で、最後に触れている
http://yazakikenji.blogspot.jp/2011/12/imageview.html

が、再掲。

例。
ImageView imageView;

imageView = (ImageView) getView().findViewById(R.id.imageView1);

同じことを動的にやるには、
String str = "1";

imageView = (ImageView) getView().findViewById(getResources().getIdentifier("imageView"+str,"id",getActivity().getPackageName()));

実際には、上記のstrは数字(連番)で持たせて処理の中で、forループなどで使う形になると思う。

・getIdentifier の詳細
第一引数は、XML ファイルで定義したIDを入れる。
同一の名前で最後に数字を連番でつけるのが楽か。(名前が違うと当然エラーになるので注意!XML側でつけたIDの命名規則が一部違っているとかもそう。)
第二引数は、
R.id なら"id"
R.drawable なら"drawable"
となる。
第三引数は、パスの指定だが、それはパッケージ名となる。getPackageName() を使わず、直書きでもいい。なおフラグメントで使うことを想定して、getActivity() している。

0 件のコメント: