2017-10-14 28 views
-1

我想存储数组中的一些mp3文件的资源标识符。 这是代码。Android:资源标识返回int值的ArrayList

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); 

我的n使用childsound变量初始化媒体播放器

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(); 
     } 

    }); 

但该函数返回像一个int值“213736282”我发现了这一点,而试图调试。 但我不明白为什么它这样做,我可以做些什么来从函数获取我的资源标识符。 任何帮助是完全赞赏。 谢谢。

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

+0

请参阅读取MP3 [**如何创建一个最小的,完整的,并且可验证例如**](HTTPS: //stackoverflow.com/help/mcve) –

+0

发布这里使用的所有变量的声明,所以我们知道它们的类型。 – Neo

+0

你确实得到它。是什么让你觉得有问题? – Oleg

回答

0

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

可以openRawResource方法和读取资源

检查这个answer从原料资源