带有RecyclerView单击事件的MotionLayout仅在第二次单击后有效

时间:2019-03-08 02:03:39

标签: android android-recyclerview android-motionlayout

我正在遵循此tutorialsource code通过使用运动版式来实现折叠工具栏。 当您在recyclerView上执行“快速滚动”,然后对recyclerView的任何项目执行click事件时,此事件仅在您第二次单击后才起作用。或者,您必须等待2-3秒,然后点击事件才能正常工作。否则,click事件无法调度到recyclerView。 (假设它等待在MotionLayout上完成动画)。我们如何解决这个问题?

任何人都可以通过将以下代码添加到文章源代码的适配器中来模拟问题。并快速滚动。

class ViewHolder(
        view: View,
        private val textView: TextView = view.findViewById(android.R.id.text1)
) : RecyclerView.ViewHolder(view) {


    var text: CharSequence
        get() = textView.text
        set(value) {
            textView.text = value
        }

    init {
        view.setOnClickListener { showMessage(it) }
    }

    private fun showMessage(view: View) {
        Toast.makeText(view.context, "OnClickListener: item ${adapterPosition + 1}", Toast.LENGTH_SHORT).show()
    }

}

1 个答案:

答案 0 :(得分:0)

将ConstraintLayout更新为2.0.0-beta2版本

https://issuetracker.google.com/issues/128914828