【发布时间】:2018-07-11 03:50:42
【问题描述】:
我有一个由另一位开发人员在 Kotlin 中完成的应用程序。它在 RecycleView Adapter 的“onBindViewHolder”方法中设置 Onclick 监听器。在视图滚动出可见区域(即用户向下滚动)并且用户滚动回到顶部之后,onclick 方法仅在视图被点击两次后才会被调用。不明白怎么回事,我的Kotlin知识也很少。这是 onclick 监听器的设置方式:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
//...
holder.itemView.editButton.onClick {
Log.d("Holder", "Click")
}
//...
}
当视图离开屏幕时,它正在工作。此外,对于刚从屏幕外返回的视图,不会调用 onBindViewholder,我相信这不是标准的吗?
recycleview也没有什么特别的设置,只是简单的线性布局和单一的view类型。
有什么想法吗?
【问题讨论】:
-
Kotlin在 Android Core 类用例中没有任何区别,它在语法上与 java 不同。您应该发布适配器的整个代码。 -
你在用
kotlin synthetic吗? -
在您的自定义
ViewHolder构造函数中调用您的holder.itemView.editButton.onClick,而不是在onBindViewHolder方法中调用 -
我的错,问题可能与 Recycleview 位于 CoordinatorLayout 内的事实有关。仍然是一个非常奇怪的问题
-
CoordinatorLayout与它无关 - 只需设置您的OnClickListener内部视图持有者构造函数
标签: android android-recyclerview kotlin onclicklistener