如何从包含ID的字符串中获取资源整数ID(如:R.string。*,R.drawable。*等)?

时间:2014-01-25 18:56:23

标签: android

最近我遇到的问题非常类似于此处:Convert String containing an ID into an Integer-ID

简而言之,我将资源标识符格式化为:R.drawable.picture,并希望将它们转换为整数值,以便它们可以存储在数组中,并通过构建应用程序布局的方法进行访问。

但是,根据用户提供的线索无法解决我的问题,我总是得到格式不正确的数据。

1 个答案:

答案 0 :(得分:1)

寻找解决方案,我来到了下面描述的那个。

详细说明:

  • 包含资源ID的字符串保存在数据库中,
  • 资源的完整地址用于描述它们(例如:R.drawable.chopin而不是简单chopin - 有时您可能会忘记资源背后隐藏的内容:它是图片还是它指向的字符串?保留完整的标识符不会让你忘记这些的类型,
  • 资源ID由方法作为字符串提取(也在数据库中保存为text值),然后解析为整数标识符。

首先,必须定义上下文:

public DBAdapter(Context context) {
   this.context = context;
   dbHelper = new dbHelper();
}

由于我有上下文,我可以解析字符串:

int composerPicture = context.getResources().
        getIdentifier(composerPictureId.substring(11), "drawable",
        context.getPackageName());

int composerName = context.getResources().
        getIdentifier(composerNameAddress.substring(9), "string",
        context.getPackageName());

使用substring()方法注意我们切断的字符数量。当ID以R.drawable.开头时,我们有11个字符,并且必须切断此值。如果有R.string.,那么我们只会切断9个字符。这样我们最终得到了我们资源的纯名称(在这种情况下是drawable或string)。方法分配ID,我们有一个整数。之后,我们可以将其存储在ArrayList<Integer>或其他任何地方。