Проверьте, прокручивается ли RecyclerView сверху (findFirstCompletelyVisibleItemPosition не работает)

Как я могу проверить, прокручивается ли просмотр recycler до вершины (начало списка) без использования 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 } }) 

Вы можете создать 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 } } }