只是一个免责声明,我对android和Java都很陌生。单击列表项时播放声音文件
我在此追求的最终产品就像应用程序一样的音板。我想显示用户可以点击播放相关声音文件的声音列表。
到目前为止,我已经在我的strings.xml文件中设置了几个字符串数组。一个数组表示可用的声音,第二个数组表示实际的R.raw.soundfile资源。展示它可能会更容易。
<string-array name="alex_list">
<item>Sound Title</item>
</string-array>
<string-array name="alex_sounds">
<item>R.raw.soundfile</item>
</string-array>
这是我迄今为止的类定义。我真的不希望任何人像现在这样“为我工作”,但我完全失去了从这里进步的方向。我觉得我应该从alex_list(单击时)传递字符串数组的位置以从alex_sounds(它应该立即播放,不需要媒体控件)获取正确的资源。但那是我卡住的地方。
public class AlexList extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), R.array.alex_list, R.layout.list_item));
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
// I have zero clue what to do from here
}
});
}
}
如果还有更好的方法可以做到这一点,请告诉我。我想做的最后一件事是在早期阶段养成不良习惯。如果我找到解决方案,我会继续研究并发回。
在此先感谢您的时间!
感谢您的快速回复。我将如何去动态插入基于哪个列表项被点击的资源ID。因此对于MediaPlayer.create(AlexLIst.this,<对应于列表的声音资源>);另外,有没有更好的方式去使用两个字符串数组? – 2012-01-16 12:33:53
啊,是的,更新了我的回应:) – Guillaume 2012-01-16 12:35:02
好吧,现在我们正在某个地方!只要alex_list中的项目与res/raw文件夹中的mp3文件名相匹配,我就可以使其工作。如果我希望显示的文字有所不同并且仍然有这项工作,我该如何解决这个问题?例如,列表中的显示文本可能会显示“Welcome to paradise”,但该文件位于R.raw.paradise.mp3。感谢您的帮助,我很高兴我找到了这个网站。 – 2012-01-16 12:52:32