Ручка рисования - по имени - PullRequest
0 голосов
/ 10 октября 2011

Я уже знаю, как обращаться с такими объектами:

final int[] imgSizeIds = new int[]{
  R.drawable.zero,R.drawable.one,R.drawable.two,
  ...
};

и

setImageResource(imgSizeIds [ size ] );

в Android.Но что, если у меня есть массив строк, который заполняется следующим образом:

String[] names = new String[]{"oliver", "peter", "mike"};

, и я хотел бы использовать Image oliver.jpg, когда будет обрабатываться Оливер строки.

Что-то вроде:

setImageResource(R.drawable. (AND HERE COMES "oliver") );

Таким образом, результат будет:

setImageResource(R.drawable.oliver);

Два массива не будут большой проблемой, но я также не знаю, как поместить строку в целочисленный массивя не могу сделать что-то вроде:

final int[10] imgSizeIds; 
String stringy = "oliver"; 
int[0] = "R.drawable." + stringy;

Так, чтобы 1-й элемент в этом массиве был установлен в R.drawable.oliver

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

попробуйте

int resid = getResources.getIdentifier("oliver" , "drawable", getPackageName());
setImageResource(resid);
0 голосов
/ 10 октября 2011

Посмотрите, поможет ли приведенный ниже код -

String[] imgNames = new String[]{ "oliver", "apple", "car"};

и используйте это для использования имен из массива именных строк -

ImageView imgvw = (ImageView) findViewById(getResources().getIdentifier(imgNames[index],"drawable",getPackageName()));

, где index - позиция элемента в массиве имен строк.

0 голосов
/ 10 октября 2011
setImageResource(R.drawable. (AND HERE COMES "oliver") ); 

Таким образом, результат будет: setImageResource(R.drawable.oliver);

этого, вероятно, не произойдет. Потому что, когда вы говорите android, чтобы взять строку, указанную в переменной String, он принял бы ее как - "oliver"и поместите его как R.drawable."oliver" или даже если, если вы попытаетесь поместить его как - setImageResource("R.drawable."+ (AND HERE COMES "oliver") ), он примет это как строку типа" R.drawable.oliver ", которая в конце концов является переменной String и не подходит дляпередается в методе setImageResource().

Убедитесь, что R.drawable.imagename дает вам int, а не строку.

...