リソースidをファイル名で指定 | Specify resource ID by file name | Android

スポンサーリンク

ImageViewに画像を設定

drawable内にあるslide716.png画像をImageViewで表示したい場合、

通常であれば

imageView.setImageResource(R.drawable.slide716);

となります。

ここでもし、画像が連番である場合はどうでしょうか

例えば、

slide1,slide2,slide3,slide4といったように。

この場合、for分を使って楽に表示したいと考えると思います。

getIdentifierを用いる

getIdentifierを用いることでファイル名を指定してアクセすることができるようになります。コードは以下に。

String fileName = "slide"+716;
int picId = getResources().getIdentifier(fileName, "drawable", getPackageName());
imageView.setImageResource(picId);

これはimageView.setImageResource(R.drawable.slide716)と同じ内容です。
2行目は簡単に説明しますとパッケージのdrawableのfileNameのリソースIdを取得。ということになります。
カスタムリストビューなどの場合はactivity.getPackageNameといった具合になります。

drawableにファイルが存在しない場合、0が返されます(picIdは0になるということ)
サンプルコード

public class MainActivity extends AppCompatActivity{
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView =(ImageView)findViewById(R.id.imageView);
        String fileName="slide"+716;
        int picId;
        picId = getResources().getIdentifier(fileName, "drawable", getPackageName());
        imageView.setImageResource(picId);
    }
}