从资源文件夹中检索图像

时间:2012-08-05 13:56:31

标签: android image resources drawable android-resources

我有一个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中的缓慢,任何有效的技术?

1 个答案:

答案 0 :(得分:0)

  

要做到这一点,我遵循两种方法,一种是

我建议:

context.getResources().getIdentifier(i.getIcon(), "drawable", context.getPackageName())
  

当缺少图标时,第一个方法抛出NULL,第二个方法显示异常

不要求不存在的图标。因为你知道,在编译时,确切地说存在什么图标,你完全有能力不要求不存在的图标。

  

如何防止我的UI中的迟缓

使用Traceview确切了解您的效果问题所处的位置。有些人会反思 - 无论你是明确地还是(更好地)使用getIdentifier(),仍然会有反思。理想情况下,您可以缓存getIdentifier()调用的结果。但除此之外,Traceview将帮助您找到困难。