java - 如何在列表中设置 OnItemClickListner 以播放音频
问题描述
我是 android 新手,请帮我在片段中单击列表项播放音频。我正在使用此代码,但在单击项目时,我的应用程序崩溃显示错误。
我已经尝试了以下代码,但我的应用程序在单击项目时崩溃:
public class FragmentOne extends Fragment {
static MediaPlayer mediaPlaye;
int audioIndex;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_fragment_one, container, false);
ListView audioView = view.findViewById(R.id.listview1);
final ArrayList<String> audioList = new ArrayList<>();
String[] proj = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME};
final Cursor audioCursor = getActivity().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);
if (audioCursor != null) {
if (audioCursor.moveToFirst()) {
do {
audioIndex = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
audioList.add(audioCursor.getString(audioIndex));
} while (audioCursor.moveToNext());
}
}
audioCursor.close();
final ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),R.layout.tectcolor, audioList);
audioView.setAdapter(adapter);
audioView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Uri u = Uri.parse(audioList.get(i).toString());
mediaPlaye = MediaPlayer.create(getContext(), u);
mediaPlaye.start();
}
});
return view;
}
}
我期望在片段中单击项目时播放音频。
解决方案
您必须在您的自定义适配器中设置 Onclick。
当您在您的列表上设置 onClick 时,Android 会检查您对列表的所有视图,这将导致崩溃。
创建一个适配器并在那里覆盖 onClick 。
有很好的编码...
推荐阅读
- symfony - EntityType - 不能使用 query_builder
- html - 使用更改文件中的新数据动态更新的 Html 模板
- java - 如何使用带有数组数据的动态按钮
- javascript - Word Office JS 插件 - GET 请求 - 对象不支持属性或方法“应用”
- assembly - 关于初始化寄存器
- fortran - IMSL ppval 函数
- c++ - 使用 spdlog (C++) 进行日志记录,记录器未将日志写入文件
- python-3.x - pandas 根据组的记录数有条件地删除记录
- wordnik - 按主题搜索 Wordnik API?
- reactjs - 如何使用反应钩子设置状态数组