set source of ImageView dynamically android

走远了吗. 提交于 2019-12-04 19:28:43

问题


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...


回答1:


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.




回答2:


If you only want it to display images that you have loaded in your drawables you can use a Spinner where the id for the item is set to be the resource for the Drawable. That would be easier on your part and easier for the user.




回答3:


If you want to use reflections have a look at the code below:

 R.drawable ourRID = new R.drawable();
                        Field photoNameField = ourRID.getClass().getField("aaa");
myImageView.setImageResource(photoNameField.getInt(ourRID));

Hope it helps.



来源:https://stackoverflow.com/questions/3516530/set-source-of-imageview-dynamically-android

工具导航Map