Вызов ресурса по строке? - PullRequest
1 голос
/ 15 мая 2011

Вот настройки. У меня есть счетчик, и каждый элемент в счетчике связан со своим собственным StringArray. Я хочу упростить процесс загрузки StringArray, когда элемент выбран в счетчике, без использования набора операторов if для каждого элемента.

StringArray имеет то же имя, что и текст элемента счетчика

Нарисовано это будет выглядеть так:

String cat = parent.getItemAtPosition(pos).toString(); //Selected Spinner item (Category)

...

String catStringArray = "R.array." + cat;
listdata = getResources().getStringArray(catArray);  //Get the StringArray

есть ли способ сделать это правильно?

- Edit-- @ EboMike

Ваш ответ отправил меня на охоту и натолкнулся на то, что я сейчас использую:

Class res = R.array.class;
Field field = res.getField(selectedCategory);
int saId = field.getInt(null);
String[] myList = getResources().getStringArray(saId);

1 Ответ

2 голосов
/ 15 мая 2011

Это не очень хороший подход. Это медленно. Было бы лучше иметь внутренний целочисленный массив со всеми идентификаторами R.string или что-то подобное.

Если вы действительно настаиваете на использовании строкового подхода, используйте Resources.getIdentifier(). Технически это не имеет большого значения, если вы делаете это только один раз.

...