android - 单击列表项时播放声音文件

标签 android listview media-player

只是免责声明,我对 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
        }

    });

}
}

如果有更好的方法来做到这一点,请告诉我。我最不想做的就是在早期养成坏习惯。我将继续努力,如果找到解决方案,我会回复。

预先感谢您的宝贵时间!

最佳答案

以这种方式更改您的值数组:

<string-array name="alex_sounds">
    <item>soundfile</item>
</string-array>

然后你的监听器变成:(packageName是一个代表你的R文件包的字符串:例如“com.example.main”)

@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
    String selectedFromList = getItemAtPosition(pos);
    int resId = getResources().getIdentifier(selectedFromList, "raw", packageName);
    MediaPlayer mp = MediaPlayer.create(AlexList.this, resId);  
    mp.start();
}

这将播放您在 res/raw 文件夹中在 ListView 中选择的名称的文件。 (在StackOverflow中快速编码,可能存在语法错误)

关于android - 单击列表项时播放声音文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879993/

相关文章:

windows - 关闭delphi应用程序及其打开的另一个应用程序

Android 4.0.4 MediaPlayer 使用 RTSP url 准备问题

java - 如何将 View 添加到livedata观察器内的cardview

java - 如何在android主类的oncreate中调用 Action 溢出按钮(选项菜单)onclicklistener

android - 视频帧捕获

vb.net - ListView – ItemCheck 事件的旧检查状态

android - Listview行requestLayout()和View回收

php - ListView 与 android mysql 数据库使用 php

azure - Azure 媒体服务是否支持 Java/PHP/Python/RoR?

android ndk 套接字网络无法访问