android 双向无限滚动Recycler视图

ve7v8dk2  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(249)

我被困在一个场景中,我必须做一个无限滚动回收视图(在我的情况下,上下两个方向)我有一些静态数据(列表中的5-8个项目),没有分页,一次只有一个项目显示在屏幕上,就像一个垂直视图寻呼机。任何帮助/建议都很感激。谢谢你提前:)

b09cbbtk

b09cbbtk1#

我自己找到了解决办法把答案贴出来,这样可以帮助别人不浪费时间
要在两个方向上创建无限的recyclerview,请在适配器和Activity中进行以下更改:
在Adapter中:通过修改getItemsCount方法来欺骗RV

override fun getItemCount() = 
yourList?.let { if (it.size > 1) Int.MAX_VALUE else it.size } ?: 0

修改绑定方法以获得正确的位置

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.bind(yourList?.let { if (it.size != 0) position % it.size else 0 } ?: 0)
}

设置适配器后,滚动到项目的中间(因为现在您的列表是Int.Max_value的大小-实际上不用担心,这是一个回收视图):

binding.yourRV.scrollToPosition(Int.MAX_VALUE / 2)

要移动到第一个位置:

binding.yourRV.scrollToPosition( 
(Int.MAX_VALUE / 2) - (Int.MAX_VALUE / 2) % yourList.size
)

要移动到任何特定或上次保存的位置:

val firstPos = (Int.MAX_VALUE / 2) - (Int.MAX_VALUE / 2) % yourList.size
binding.yourRV.scrollToPosition( firstPos + indexYouWishToMoveTo)

相关问题