Ken
Ken

Reputation: 31161

Android and getting a view with id cast as a string

In the Java code of an Android project if you want the reference for a view resource you can do something like:

View addButton = findViewById(R.id.button_0);

In the above R.id.button_0 is not a String. Is it possible to dynamically refer to a resource by a string, such as "R.id.button_0"?

I'd like to refer to a button by "R.id.button_%i" where %i is replaced by some valid index.

Upvotes: 25

Views: 23947

Answers (2)

Cristian
Cristian

Reputation: 200080

int resID = getResources().getIdentifier("button_%i",
    "id", getPackageName());
View addButton = findViewById(resID);

where %i is replaced by some valid index.

The getResources() method belongs to the Context class, so you can use that directly from an Activity. If you are not inside an activity, then use a context to access: (myCtxt.getResources()).

Upvotes: 56

jsonfry
jsonfry

Reputation: 2087

You could try putting all the ids you want in an array and then using that array to dynamically refer to your resources instead.

Upvotes: 4

Related Questions