gpt4 book ai didi

android - 在 NestedScrollView 中找不到 RecyclerView 可见项目位置

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:43 25 4
gpt4 key购买 nike

如果 RecyclerView 位于 NestedScrollView 内并且回收器具有 nestedScrollingEnabled="false" 以便与 RecyclerView 上方的其他 View 平滑滚动,我如何获得 RecyclerView 中第一个/最后一个完全可见的项目。

所有这些功能

int findFirstVisibleItemPosition();
int findFirstCompletelyVisibleItemPosition();
int findLastVisibleItemPosition();
int findLastCompletelyVisibleItemPosition();

要么返回在 recyclerView 中创建的第一个/最后一个项目。

我想找到当前可见的项目,因为我想让 RecyclerView 无限滚动,如果只剩下几个项目要滚动,我应该获取数据。

谢谢

最佳答案

您可以在 nestedscrollview 上添加滚动监听器,并在滚动时检查 recylerview 中放置在 nestedScrollview 中的每个项目是否可见。下面是例子

  val scrollBounds = Rect()
nestedScrollView?.getHitRect(scrollBounds)

nestedScrollView?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val scrollBounds = Rect()
if (recyclerView != null && recyclerView.adapter != null
&& recyclerView.adapter?.itemCount != null
&& recyclerView.adapter?.itemCount!! > 0) {
for (i in 0 until recyclerView.adapter?.itemCount!!) {
var view = recyclerView?.findViewHolderForAdapterPosition(i)?.itemView

if (view != null) {
if (view.getLocalVisibleRect(scrollBounds)) {
if (!view.getLocalVisibleRect(scrollBounds)
|| scrollBounds.width() < view.getWidth()) {
Logger.debugLog("WidgetScrolled", "BTN APPEAR PARCIALY")
} else {
Logger.debugLog("WidgetScrolled", "BTN APPEAR FULLY!!!")
}
} else {
Logger.debugLog("WidgetScrolled", "No")
}
}
}
}
}
})

关于android - 在 NestedScrollView 中找不到 RecyclerView 可见项目位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43370430/

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