要解决Android中ViewBinding的onItemClickListener不被调用的问题,可以尝试以下解决方法:
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = LinearLayoutManager(context)
binding.recyclerView.addOnItemTouchListener(object : RecyclerView.OnItemTouchListener {
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
val childView = rv.findChildViewUnder(e.x, e.y)
if (childView != null && e.action == MotionEvent.ACTION_UP) {
val position = rv.getChildAdapterPosition(childView)
// 处理点击事件
return true
}
return false
}
override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {}
override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
})
private lateinit var binding: YourLayoutBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = YourLayoutBinding.inflate(inflater, container, false)
return binding.root
}
private var _binding: YourFragmentBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = YourFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
class YourViewHolder(private val binding: YourItemBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(data: YourData) {
binding.itemTextView.text = data.text
binding.root.setOnClickListener {
// 处理点击事件
}
}
}
通过检查上述几个方面,你应该能够解决Android中ViewBinding的onItemClickListener不被调用的问题。