我是iOS的Android编程新手。我似乎无法解决这个问题,看起来很简单。我想调用一个方法并向它发送一个数字,并根据数字播放一定的声音。我有大约100个声音,所以当我点击ListView中的一行时,我想调用此方法。如何将num附加到“声音”
playSound(1);
void playSound(int num) {
String string = new String("R.raw.sound"+ num);
Uri myUri = Uri.parse(string);
mPlayer = MediaPlayer.create(MainActivity.this, myUri);
}
答案 0 :(得分:0)
对于ListView,它是
<强>初始化强>
ListView list = (ListView) findViewById(R.id.vmf_items_list);
list.setAdapter(adapter);
list.setOnItemClickListener(LstListener);
OnItemClickListener
private OnItemClickListener LstListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int Pos=position;
//your method
}
};
答案 1 :(得分:0)
您可以使用:
int id = getResources().getIdentifier("sound"+num, "raw", getPackageName());
获取声音ID并将其传递给方法
mPlayer = MediaPlayer.create(MainActivity.this, id);
答案 2 :(得分:0)
跳过你已经解决了你的问题。但是,如果所有上述答案方法都不适合您,那么您可能会尝试并且正在考虑的方法很少。他们可能会帮助你。
方法1:
另一种方法是在array.xml
文件中保存100首歌曲的名称。类似的东西:
<resources>
<string-array name="song_names">
<item>song_name1</item>
<item>song_name2</item>
<item>song_name3</item>
...
</string-array>
</resources>
然后您可以获取数组并从那里选择ith
名称。
//在onCreate()或函数外的某个地方
String [] allSongNames = context.getResources()。getStringArray(R.array.song_names);
//Get ith name based on your parameter
void playSound(int num) {
String string = allSongNames[num];
Uri myUri = Uri.parse(string);
mPlayer = MediaPlayer.create(MainActivity.this, myUri);
}
方法2:
如果您不想在数组中存储100个名称,则可能有备用项。我假设你已经用某种模式命名了你的100首歌曲。所以,假设它像song_name1
,song_name3
,song_name3
...
string.xml
中只能有一个字符串:
SONG_NAME
然后,您将该字符串连接到要传递的num
值:
String songNameIni = res.getString(R.string.initial_song_name);
void playSound(int num) {
String fullSongName = songNameIni + String.valueOf(num);
Uri myUri = Uri.parse(fullSongName);
mPlayer = MediaPlayer.create(MainActivity.this, myUri);
}
希望这会有所帮助。