Android 如何通过将字符串值与图像名称匹配来选择可绘制图像?

Android 如何通过将字符串值与图像名称匹配来选择可绘制图像?,android,android-resources,Android,Android Resources,我有一个字符串的arraylist,我需要随机选择一个索引,如果字符串值是 “bear”,然后将按钮的背景设置为bear.jpg 好的,我的研究表明,资源是通过int-id访问的,而不是通过它们的名称,我不确定实现我想要做的事情的最佳方式。这是我的密码: list.add("alligator"); list.add("bear"); list.add("beaver"); list.add("bison"); randomInt = randomGen

我有一个字符串的arraylist,我需要随机选择一个索引,如果字符串值是 “bear”,然后将按钮的背景设置为bear.jpg

好的,我的研究表明,资源是通过int-id访问的,而不是通过它们的名称,我不确定实现我想要做的事情的最佳方式。这是我的密码:

    list.add("alligator");
    list.add("bear");
    list.add("beaver");
    list.add("bison");

    randomInt = randomGenerator.nextInt(list.size());
    b1.setBackgroundResource(R.drawable.list.get(randomInt));
当然,代码的最后一行是错误的,我写它是为了说明我想要实现什么。我最新的尝试是通过这种方式获取资源id和访问资源,但我不知道这是否是实现此目的的方法,如果是,我没有使用正确的代码。我正在努力自己做这件事,但我可以在这里做一些建议。以下是我的尝试:

         String mDrawableName = "bear";
         int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

        String s= Integer.toString(resID);
试试这个:

list.add("alligator");
list.add("bear");
list.add("beaver");
list.add("bison");

randomInt = randomGenerator.nextInt(list.size());

int resourceId = getResources().getIdentifier(list.get(randomInt), "drawable", getPackageName());
b1.setBackgroundResource(resourceId);
试试这个:

list.add("alligator");
list.add("bear");
list.add("beaver");
list.add("bison");

randomInt = randomGenerator.nextInt(list.size());

int resourceId = getResources().getIdentifier(list.get(randomInt), "drawable", getPackageName());
b1.setBackgroundResource(resourceId);
使用下面的代码

int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());    
b1.setBackgroundResource(resID);
使用下面的代码

int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());    
b1.setBackgroundResource(resID);

您是否尝试过int resID=getResources().getIdentifier(mdrawallename,“drawable”,getPackageName());b1.挫折资源(剩余);也许我做了,我试了很多,我会试试这个,以防万一这真的很有效!非常感谢。我想我以前没试过!如果你加上这个作为回答,我可以接受,你应该得到分数!在您的代码中,您尝试了int resID=getResources().getIdentifier(mDrawableName,“drawable”,getPackageName())是什么;b1.挫折资源(剩余);也许我做了,我试了很多,我会试试这个,以防万一这真的很有效!非常感谢。我想我以前没试过!如果你加上这个作为回答,我可以接受,你应该得到分数!在你的代码中什么是“b1”