Aka*_*pat 11 android android-recyclerview
如果它位于NestedScrollView中,并且回收器nestedScrollingEnabled="false"可以与RecyclerView上方的其他视图平滑滚动,那么如何在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")
}
}
}
}
}
})
Run Code Online (Sandbox Code Playgroud)
好吧,我找不到任何方法RecyclerView可以让两个位于 a 内NestedScrollView,并且仍然可以说出哪个项目在屏幕上可见。
所以我的解决方案是删除NestedScrollView并让 Vertical RecyclerView 成为页面中的主视图,并将 Horizontal 添加RecyclerView为 Vertical Recycler 的第一项。由于我只想知道垂直回收器的位置,因此我现在可以通过使用问题中提到的任何方法来获取该位置。
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |