Android Kotlin中Chip View设置setOnClickListener点击不生效问题求助
Kotlin Android Chip点击事件不触发解决方案
核心问题排查
- 首先补充缺失的控件初始化代码,你当前的代码中仅初始化了
byName和byPrice两个Chip,用到的byRating未执行findViewById绑定,会直接导致点击事件无法绑定到对应控件:
byName = view.findViewById(R.id.byName) byPrice = view.findViewById(R.id.byPrice) byRating = view.findViewById(R.id.byRating) // 新增该行完成byRating初始化
- 检查Chip XML属性:不要给对应Chip设置
android:clickable="false"、android:focusable="false"属性;如果Chip放在ChipGroup容器中,不要设置android:checkable="false",该属性会默认拦截点击事件。 - 确认Material组件依赖正确,Chip属于Material Design组件,需要确保模块级
build.gradle中引入了对应依赖:
dependencies { implementation 'com.google.android.material:material:1.9.0' }
代码优化建议
你当前的点击事件逻辑中,每次触发排序都重新创建MainAdapter实例,会造成不必要的性能消耗,建议给Adapter新增数据集更新方法,直接更新已有Adapter的数据集即可:
// Adapter内新增方法 fun updateData(newList: List<DataList>) { this.list = newList } // 点击事件修改为 byName.setOnClickListener { Collections.sort(list, ratingCompName) (recl_view.adapter as MainAdapter).apply { updateData(list) notifyDataSetChanged() } }
内容的提问来源于stack exchange,提问作者yazhini
相关产品推荐
相关产品推荐

