检查RecyclerView是否在顶部滚动(findFirstCompletelyVisibleItemPosition不起作用)

时间:2017-09-01 22:00:42

标签: android android-recyclerview kotlin pull-to-refresh

如何在不使用findFirstCompletelyVisibleItemPosition的情况下检查回收商视图是否滚动到顶部(列表的开头)?

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

我需要知道这只是在回收者视图到达顶部时触发动作。

 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
        }
    })

1 个答案:

答案 0 :(得分:3)

您可以创建class App extends Component { render() { return ( <div> <BrowserRouter> <div> <MenuBar /> //SIMPLIFIED FOR POST <SearchBar path="/search" exact/> </div> </BrowserRouter> </div> ); } } ,并跟踪滚动的数量。

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

RecyclerView.OnScrollListener