gpt4 book ai didi

android - 检查 RecyclerView 是否滚动到顶部(findFirstCompletelyVisibleItemPosition 将不起作用)

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:12 24 4
gpt4 key购买 nike

如何在不使用 findFirstCompletelyVisibleItemPosition 的情况下检查 recycler view 是否滚动到其顶部(列表的开头)?

说明:我不能使用这个方法,因为 RecyclerView 上的项目很大,有时永远不会“完全可见”,所以该方法将返回 -1 (RecyclerView.NO_POSITION)

我需要知道这一点才能仅在回收器 View 到达顶部时触发操作。

 val manager = timelineRecyclerView?.layoutManager as StaggeredGridLayoutManager
val visibles = manager.findFirstCompletelyVisibleItemPositions(null)

已解决:包括一些代码以提供帮助

    timelineRecyclerView.addOnScrollListener(object:RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView:RecyclerView,
newState:Int) {
super.onScrollStateChanged(recyclerView, newState)

}
override fun onScrolled(recyclerView:RecyclerView, dx:Int, dy:Int) {
super.onScrolled(recyclerView, dx, dy)

currentTimelinePosition += dy

Log.wtf("position", currentTimelinePosition.toString())
//if the timeline position is on its start, allow swipe and refresh
swipeLayout.isEnabled = currentTimelinePosition == 0
}
})

最佳答案

您可以创建一个 RecyclerView.OnScrollListener,并跟踪它滚动了多少。

例如,你需要做的就是保留一个变量,并根据垂直滚动量用onScroll更新它。

class MyScrollListener() : RecyclerView.OnScrollListener() {

var currentScrollPosition = 0

override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
currentScrollPosition += dy

if( currentScrollPosition == 0 ) {
// We're at the top
}
}
}

关于android - 检查 RecyclerView 是否滚动到顶部(findFirstCompletelyVisibleItemPosition 将不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com