运行时权限校验后RecyclerView数据无法显示的问题咨询
权限授予后RecyclerView数据不显示问题修复
核心问题分析
你的代码里checkPermissions函数的else分支存在逻辑错误:当权限已经授予时,代码仅引用了requestMultiplePermissions对象,没有执行任何实际加载数据的操作,导致getMusicList()不会被调用,RecyclerView自然没有数据可展示。
代码修复
首先修正checkPermissions函数,确保权限已授予时直接触发数据加载:
private fun checkPermissions(){ context?.let { ctx -> if (ContextCompat.checkSelfPermission(ctx, READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestMultiplePermissions.launch(arrayOf(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)) } else { // 权限已授予,直接加载音乐列表 getMusicList() } } }
额外检查点
- RecyclerView与Adapter状态:确认
getMusicList()执行完成后,已将数据传递给RecyclerView的Adapter,并且调用了adapter.notifyDataSetChanged()(或使用DiffUtil、LiveData等方式更新UI)。 - 布局有效性:检查RecyclerView的布局参数,确保其高度设置为
match_parent或具体数值,避免因布局折叠导致数据不可见。 - 权限适配(可选):针对Android 13及以上版本,
WRITE_EXTERNAL_STORAGE权限已不再需要,可移除该权限请求,仅保留READ_MEDIA_AUDIO(针对音频文件)。
内容的提问来源于stack exchange,提问作者Rishail Siddiqui
相关产品推荐
相关产品推荐

