質問: 御世話になります。 android開発初心者になります。 androidでクリックした際に動的に画像を変更する関数があります。 ``` ((ImageView)findViewById(R.id.detailview)).setImageResource(R.drawable.i1); ``` 画像を指定するsetImageResourceについて、その運用方法で困ったことがあります。 setImageResourceの引数を自由に変更したいと考えています。変更する際は、文字列として引数の内容を変えるつもりです。 しかし、setImageResourceはint型の値以外だとエラーになります。 イメージとしては、 ``` ((ImageView)findViewById(R.id.detailview)).setImageResource(後から変更できる引数); ``` が出来たらと考えています。 setImageResourceは、あらかじめセットした値しか受け付けないのでしょうか?
回答: Resources#getIdentifier)メソッドを使えば、文字列からリソースIDを得る事ができます。 ``` ImageView imageView = (ImageView)findViewById(R.id.image); imageView.setImageResource(R.drawable.hoge); // 上と同じ imageView.setImageResource(getResources().getIdentifier("hoge", "drawable", getPackageName())); // もしくは、 imageView.setImageResource(getResources().getIdentifier("@" + getPackageName() + ":drawable/hoge", null, null); ```