android - Android Kotlin - 获取 RecyclerView onBindViewHolder 内的 View 与屏幕顶部之间的距离
问题描述
Log.d(tagg, "test1: " + holder.commentsLoading.top.toString())
holder.scrollView.setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
lastPosUpdate(meme.id, scrollY)
Log.d(tagg, "test2: " + holder.commentsLoading.top.toString())
})
holder.textUserComments.setOnClickListener {
Log.d(tagg, "test3: " + holder.commentsLoading.top.toString())
}
test2
并且test3
无论我滚动并更改实际位置,都显示相同的位置,test1
返回 0,这到底是怎么回事!?
解决方案
我假设您在 onCreateViewHolder 中有该代码(这解释了您的问题)。recyclerView 背后的机制是它只创建尽可能多的 ViewHolder/Views 来填充全屏(大约) - 然后回收视图。出于这个原因,一个 Viewholder 只会被创建一次。test1 只会被评估一次。相反,由于无论视图被回收多少次都会调用您的侦听器,因此您将获得正确的位置。
更改此代码:
Log.d(tagg, "test1: " + holder.commentsLoading.top.toString())
到 onBindViewHolder,你的问题就解决了。
推荐阅读
- json - 如何在 JSX 中按键过滤 JSON
- javascript - 将背景图像添加到 SVG 圆圈
- html - 如果单击,如何更改伪类背景颜色?
- database - 在同一台机器上连接两个 odoo 实例
- python-3.x - AttributeError:“DataFrame”对象没有属性“groupyby”
- javascript - 使用 mvc Jquery 如何获取选定的单选按钮值
- vue.js - 调用方法作为 mustache 标记内的绑定表达式并返回值
- python - 字符串到日期时间 python
- jhipster - 使用 Amazon Cognito 运行 JHipster 微服务
- javascript - 尝试使用 JSON 数据填充卡片时,获取元素类型无效错误