Android: ссылка на идентификатор стиля R.style. динамическим способом [dублировать]

Почему бы не использовать бинарный поиск? Это всегда будет завершено после 5 операций (при условии, что размер int равен 4 байтам):

if (0x0000FFFF & value) { if (0x000000FF & value) { if (0x0000000F & value) { if (0x00000003 & value) { if (0x00000001 & value) { return 1; } else { return 2; } } else { if (0x0000004 & value) { return 3; } else { return 4; } } } else { ... } else { ... } else { ...
20
задан Matt Swanson 10 March 2010 в 03:31
поделиться

1 ответ

Используйте getResources (). getIdentifier () из вашего Context (например, Activity ), но, пожалуйста, оставьте результат, если вы будете использовать это не один раз. getIdentifier () реализован на ресурсах .

Например:

  int drawableId = getResources (). getIdentifier  («foo» + index, «drawable», getPackageName ());   

вернет значение R.drawable.fooN , где N - это число, указанное индексом .

Для получения дополнительной информации см. этот и этот и этот .

44
ответ дан Community 15 August 2018 в 14:46
поделиться
  • 1
    Удивительно, что отлично работает. Благодаря! – Matt Swanson 10 March 2010 в 04:11
  • 2
    Чтобы улучшить этот ответ: Bitmap myImage = BitmapFactory.decodeResource (getResources (), R.drawable.myImageName); – RockMeetHardplace 3 December 2011 в 19:23
  • 3
    Как вы рекомендуете кэширование, LruCache ? – theblang 2 July 2014 в 17:06
  • 4
    @mattblang: ID - это только ints, и вам не должно быть миллионов идентификаторов. Следовательно, простые члены данных (или даже локальные переменные за пределами циклов) должны быть достаточными в большинстве случаев. – CommonsWare 2 July 2014 в 17:18
  • 5
    @CommonsWare К сожалению, я имел в виду чертежи. – theblang 2 July 2014 в 17:19
Другие вопросы по тегам:

Похожие вопросы: