Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Массив идентификаторов / 6 сообщений из 6, страница 1 из 1
19.12.2013, 12:08
    #38506320
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
Доброго времени суток всем!

В проекте есть куча картинок-слайдов с названиями а-ля picture00, picture01, picture02 etc.
Можно ли как-то завести массив из их идентификаторов, чтобы не писать чудовищных условий, типа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
switch (mNum) {
case 0: 
   mPicture = mRes.getDrawable(R.drawable.picture00);
   break;
case 1: 
   mPicture = mRes.getDrawable(R.drawable.picture01);
   break;
...
}

а вместо этого написать что-то подобное:
Код: java
1.
   mPicture = mRes.getDrawable(mID[mNum]);

?
Или может вообще есть какой-то более изящный выход?
...
Рейтинг: 0 / 0
19.12.2013, 12:54
    #38506409
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
да можно
нашел какойто кусок у себя в проекте

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
private int getResIdByName(String name) {

		// Class res = R.id.class;
		Class res = R.drawable.class;
		try {
			Field field = res.getField(name);
			return field.getInt(null);
		}
		catch (Exception e) {
			// можно вывести принтстек
		}
		return 0;
}


****

int id_res = getResIdByName("picture" +number);

if (id_res > 0)
   mPicture = mRes.getDrawable(id_res);

***


	}
...
Рейтинг: 0 / 0
19.12.2013, 13:49
    #38506482
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
Джибс,

Спасибо огромное! Работает!
Код: java
1.
2.
3.
4.
5.
private int mDrawableId[]; // Массив идентификаторов ресурсов
mDrawableId = new int[16];
for(int i = 0; i < 16; i++) {
      	mDrawableId[i] = getResIdByName("picture"+(i<10?"0":"")+i);
}


А вот это "picture"+(i<10?"0":"")+i можно как-то покрасивее закодить?
...
Рейтинг: 0 / 0
19.12.2013, 14:18
    #38506528
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
String formatted = String.format("%02d", 12);
formatted = String.format("%02d", 2);

так попробуй.
проверь
...
Рейтинг: 0 / 0
19.12.2013, 14:49
    #38506587
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
Джибс,

Еще раз спасибо!

Сделал так:
Код: java
1.
2.
3.
...
mDrawableId[i] = getResIdByName(String.format("picture%02d", i));
...

Работает!
...
Рейтинг: 0 / 0
19.12.2013, 16:58
    #38506831
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив идентификаторов
это хорошо )
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Массив идентификаторов / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]