Получение ресурса от имени вместо идентификатора в Android - PullRequest
1 голос
/ 16 августа 2011

У меня есть следующий код для получения ресурса с использованием имени вместо идентификатора:

spec = new ImageView[56];
for (i=2; i<=56; i++) {
    String s = null;
    s = "items_r"+Integer.toString(i)+"_c1";
    spec[i] = (ImageView) findViewById(getResources().getIdentifier(s,"drawable",getPackageName()));
    Log.e(tag, Boolean.toString(spec[i] == null));
}

У меня в папке для рисования 56 элементов с именами items_r1_c1 to items_r56_c1;
Но я получаю spec [i] как ноль.
Может ли кто-нибудь указать мне на мою ошибку и как ее исправить?
Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

findViewById(int) для поиска View s, которые уже были раздуты и которые в настоящее время существуют в представлении содержимого вашей активности.

Вы захотите использовать Resources.getDrawable(int) или ImageView.setImageResource(int).

spec = new ImageView[56];
for (i=2; i<=56; i++) {
    String res = "items_r" + Integer.toString(i) + "_c1";
    int resId = getResources().getIdentifier(res, "drawable", getPackageName());
    spec[i] = new ImageView();
    // Drawable image = getResources.getDrawable(resId);
    // spec[i].setImageDrawable(image);
    spec[i].setImageResource(resId);
    Log.e(tag, Boolean.toString(spec[i] == null));
}
1 голос
/ 16 августа 2011

Попробуйте это

int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName());
spec[i] = (new ImageView()).setImageResource(id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...