Spa*_*ron 2 android kotlin android-recyclerview android-nestedscrollview
我有一个RecyclerView内部NestedScrollView,我试图在滚动事件使用期间获取最后一个可见列表项的位置.以下代码允许我可靠地检测滚动事件:
val recyclerView = nestedScrollView.getChildAt(0) as RecyclerView
nestedScrollView.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int ->
val layoutManager = recyclerView?.layoutManager as? LinearLayoutManager
val lastVisiblePosition = layoutManager?.findLastVisibleItemPosition()
}
Run Code Online (Sandbox Code Playgroud)
然而问题是,这里lastVisiblePosition总是最终成为列表中的最后一项,无论这是否实际上是在scree上.我哪里可能出错?
如果你把一个RecyclerView可滚动的容器 - 一个NestedScrollView放在你的盒子中 - 它将基本上变得花哨LinearLayout,膨胀并一次显示所有项目.你得到第一个和最后一个项目作为第一个和最后一个可见因为 - 对于RecyclerView - 它们是.所有项目都被充气和添加,因此所有这些项目都在可滚动视图内"在屏幕上可见".
简单的解决方案是不将RecyclerView嵌套在NestedScrollView中.RecyclerView可以滚动,因此您可以在RecyclerView中放置所需的页眉或页脚.嵌套可滚动视图总是有缺点,你应该尽可能避免它.
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |