set source of ImageView dynamically android

31,087

If you want to allow open text input, you'll either have to use raw assets to fetch them by string name (see the sidenote on that page), or else use magical Java reflection to retrieve a field of the R class by name. Alternatively, you could keep a HashMap of strings to R.drawable integer values and look it up, but then you'd have to maintain that hashmap.

Share:
31,087
Kyle
Author by

Kyle

Updated on July 09, 2020

Comments

  • Kyle
    Kyle almost 4 years

    I have an ImageView on my scene that I would like to set the source of dynamically based on user input.

    Let's say I have 4 images in my drawable folder: aaa.png, bbb.png, ccc.png, and ddd.png.

    When my application loads I set the image to: aaa.png

    myImageView.setImageResource(R.drawable.aaa);
    

    now I have an EditText where a user can type in bbb and I want to change the image source to be the bbb.png, or user enters ccc, change source to ccc.png etc.

    how can I dynamically set the parameter in setImageResource()? I tried playing around with the Drawable object to no avail...

  • Kyle
    Kyle over 13 years
    I think the hashmap is what I'll end up doing. Question about that though, if assets are added, do the integer values for existing assets change (increment)? Or would they stay the same?
  • Zach Mcgregor
    Zach Mcgregor over 13 years
    Resources, you mean? R.ids are recompiled automatically into constants and build time and you most definitely should not attempt to access them by a hardcoded number. Just use the constants from the R.id file and you'll be fine.