我怎麼能檢查回收視圖被滾動到其頂部(列表的開頭),而無需使用findFirstCompletelyVisibleItemPosition
?檢查RecyclerView是在上面滾動(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
}
})
我注意到你用'pull-to-refresh'標記了,究竟是什麼與此有關?如果我們知道更多細節,可能會有更好的解決方案。 –
後面的問題是RecyclerView在SwipeRefreshLayout中。刷卡有時會刷新錯誤的位置。 I.E.當列表不在頂部時。所以我只允許在RecyclerView在頂部時刷新 – cesarsicas
啊,我明白了。這很奇怪,在'RecyclerView'中我沒有這個問題,但也許是那些較大的項目。 –