У меня есть база данных SQL, из базы данных я получаю строку имени, используя, что мне нужно показать значок в списке. Для этого я следовал два метода, один:Извлечь изображения из папки ресурсов
int id= context.getResources().getIdentifier(path + i.getIcon(),null, null);
Я нашел этот метод не очень эффективен, так что я следовал какой-то другой метод, т.е.
try {
Class res = R.drawable.class;
Field field = res.getField(i.getIcon());
drawableId = field.getInt(null);
holder.ContactImage.setImageResource(drawableId);
}
catch (Exception e) {
Log.e("MyTag", "Failure to get drawable id.", e);
holder.ContactImage.setImageResource(R.drawable.ic_all_contacts_green);
}
Здесь возникает проблема, какое-то время имя значка, которое я получаю из БД, не будет присутствовать в папке «Жесткая», в то время я чувствую, что мой пользовательский интерфейс вялый, если я пытаюсь прокрутить, я пробовал использовать оба метода, упомянутые выше, но я не нашел смысла использовать.
Как преодолеть эту проблему, когда значок отсутствует, первый метод выбрасывает NULL, а второй показывает исключение, но почему это занимает слишком много времени при этом? Как предотвратить медлительность в моем интерфейсе, какие-либо эффективные методы?
Вы не должны использовать API отражения, поскольку он очень медленный. Особенно на Dalvik – nullpotent
Я в замешательстве, что вы пытаетесь сделать. Обычным способом получения идентификатора выталкиваемого в папке 'drawable' является' R.drawable.id_value_of_drawable', где имя файла drawable равно 'id_value_of_drawable.extension'. – DeeV
Hey @AljoshaBre даже в моем телефоне и его медленное :( – Naruto