используйте строку / массив, чтобы получить файл (Android) - PullRequest
0 голосов
/ 12 октября 2011

У меня проблема с динамическим захватом изображения. Проще говоря, как я могу сделать что-то вроде этого:

ImageView img = (ImageView)findViewById(R.id.img_place);
img.setImageResource(R.drawable.image_string[1]);

Итак, в общем случае image_string может содержать что угодно,

image1 image2 image3

Должно быть возможно, но не могу понять, как.

Ответы [ 3 ]

3 голосов
/ 12 октября 2011

Вы можете получить ресурсы по имени.как это:

ImageView img = (ImageView)findViewById(R.id.img_place);
int resource = getResources().getIdentifier(image_string[0], "drawable", "com.package");
img.setImageResource(resource);
3 голосов
/ 12 октября 2011

Вы можете сделать это следующим образом,

public static Integer[] images = new Integer[]{R.drawable.my_love,R.drawable.first,R.drawable.second,R.drawable.third};

И затем установить ресурс изображения следующим образом:

ImageView mImageView = new ImageView(this.context);
mImageView.setImageResource(this.images[position]);
0 голосов
/ 12 октября 2011

Предполагая, что image_string был массив строк XML , вы можете сделать следующее:

String[] image_string = getResources().getStringArray(R.array.image_string);

А затем обращаться к элементам, как к обычному массиву.

Однако setImageResource принимает идентификатор ресурса, а не строку.

Таким образом, чтобы получить идентификатор, вы должны сделать что-то вроде:

ImageView img = (ImageView)findViewById(R.id.img_place);
String[] image_string = getResources().getStringArray(R.array.image_string);
img.setImageResource(getResources().getIdentifier(image_string[1] , "drawable", getPackageName()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...