我有一个SQL数据库,从DB我将获取名称字符串使用我需要在List中显示图标。 为此,我遵循了两种方法,一种是:
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);
}
这里的问题是,有些时候我从DB获得的图标名称将不会出现在Drawable文件夹中,在那段时间我觉得如果我尝试滚动我的UI是缓慢的,我尝试使用上面提到的两种技术但我没有用。
如何克服这个问题,当缺少图标时,第一个方法抛出NULL而第二个方法显示异常,但为什么这样做需要花费太多时间? 如何防止我的UI中的缓慢,任何有效的技术?
答案 0 :(得分:0)
要做到这一点,我遵循两种方法,一种是
我建议:
context.getResources().getIdentifier(i.getIcon(), "drawable", context.getPackageName())
当缺少图标时,第一个方法抛出NULL,第二个方法显示异常
不要求不存在的图标。因为你知道,在编译时,确切地说存在什么图标,你完全有能力不要求不存在的图标。
如何防止我的UI中的迟缓
使用Traceview确切了解您的效果问题所处的位置。有些人会反思 - 无论你是明确地还是(更好地)使用getIdentifier()
,仍然会有反思。理想情况下,您可以缓存getIdentifier()
调用的结果。但除此之外,Traceview将帮助您找到困难。