0

我有一个 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);
        }

这里的问题是,有时我从 DB 获得的图标名称不会出现在 Drawable 文件夹中,那时我觉得如果我尝试滚动我的 UI 很慢,我尝试使用上述两种技术但我发现没有用.

如何克服这个问题,当图标丢失时,第一个方法抛出 NULL 而第二个方法显示异常,但为什么这样做要花太多时间呢?如何防止我的用户界面迟缓,任何有效的技术?

4

1 回答 1

0

为此,我遵循了两种方法,一种是

我会推荐:

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

当图标丢失时,第一种方法抛出 NULL,第二种方法显示异常

不要要求一个不存在的图标。由于您在编译时知道确切的图标存在和不存在,因此您完全有能力不要求不存在的图标。

如何防止我的 UI 出现呆滞

使用Traceview找出性能问题的确切位置。有些人会反思——无论你是明确地做还是(更好地)使用getIdentifier(),仍然会有反思。理想情况下,您将缓存getIdentifier()调用的结果。但除此之外,Traceview 将帮助您查明您的困难。

于 2012-08-05T14:44:17.347 回答