Android:返回int值的资源标识符的ArrayList

时间:2017-10-14 17:59:23

标签: java android arrays android-resources

我正在尝试为数组中的某些mp3文件存储资源标识符。 这是代码。

    private HashMap<String,List<Integer>> listHashMapnum;
    private List<String> listhead;



    listhead.add("Forty");
    listhead.add("Fifty");
    ArrayList<Integer> fortysound = new ArrayList<>();
    fortysound.add(R.raw.forty);
    ArrayList<Integer> fiftysound = new ArrayList<>();
    fiftysound.add(R.raw.fifty);

然后我将数组列表存储在hashmap

 listHashMapnum.put(listhead.get(0),fortysound);
 listHashMapnum.put(listhead.get(1),fiftysound);

然后我使用函数来获取hashmap中的值

 public Integer getChild2(int i, int i1) {
    return listHashMapnum.get(listheader.get(i)).get(i1);
}

我从这个函数中得到了这个值

 Integer childsound = (Integer) getChild2(i, i1);

然后我使用childsound变量初始化mediaplayer

    Button bt;

    bt = (Button) view.findViewById(R.id.speaker);
    final MediaPlayer mp = MediaPlayer.create(context, childsound);
    bt.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            mp.start();
        }

    });

但该函数返回一个类似于“213736282”的int值,我在尝试调试时发现了这一点。  但我不明白为什么它会这样做以及我可以做些什么来从函数中获取我的资源标识符。  任何帮助都完全赞赏。  谢谢。

编辑: 错误实际上是在代码的另一部分,所以上面的代码是正确的。谢谢

1 个答案:

答案 0 :(得分:0)

是的,你是对的。 Android资源标识符是生成并存储在R.java中的整数值。

您可以openRawResource方法并阅读资源

检查此answer以从原始资源中读取mp3