Здесь настройка. У меня есть счетчик, и каждый элемент в spinner связан со своим собственным StringArray. Я хочу оптимизировать процесс загрузки StringArray, когда элемент выбран в счетчике, не используя кучу операторов if для каждого элемента.
У StringArray есть то же имя, что и текст элемента spinner
Нарисовано это будет выглядеть так:
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);
Это не отличный подход. Это медленно. Было бы лучше иметь внутренний целочисленный массив со всеми идентификаторами R.string или что-то подобное.
Если вы действительно настаиваете на использовании строкового подхода, используйте Resources.getIdentifier()
. Технически это не очень важно, если вы делаете это только один раз.