android - RecyclerView 双向无限滚动

标签 android android-recyclerview

我想实现一个永不结束的 RecyclerView。在第一项之前有最后一项,在滚动最后一项之后,显示第一项。 我怎样才能做到这一点? 我想要实现的是一个音乐播放器,可以显示当前歌曲、之前和之后的歌曲。 像这样: enter image description here

(ps.有没有比使用recyclerview更好的方法?)

最佳答案

我看到这样做的方法是将必须显示的项目数定义为 Integer.MAX_VALUE。在适配器的 onBindViewHolder() 中,您将拥有如下内容:

@Override
public int getItemCount() {
    return (mItems == null) ? 0 : Integer.MAX_VALUE;
}

现在您真的不能显示 Integer.MAX_VALUE 项目,所以这是对 RecyclerView 的一个小谎言。在您的代码中,将索引值从 0...Integer.MAX_VALUE-1 映射到 0...your_item_count-1,就像在 onBindViewHolder() 中这样:

int realPos = position % mItems.size();

使用realPos代替RecyclerView传入的位置。

剩下的就是将 RecyclerView 滚动到范围的中间:

mRecycler.scrollToPosition(Integer.MAX_VALUE / 2);

这工作正常,但它完美吗?不,但足够接近;我认为没有人会滚动到足以看到缺陷。 (它会在极端处停止缠绕。)

关于android - RecyclerView 双向无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51482227/

相关文章:

javascript - WebView加载HTML但不显示

Android:通过 Content Provider 访问 SQLite 数据库还是实现 DAO?

android - Firebase android 如何防止 FirebaseRecyclerAdapter 自动更新?

java - 如何从房间数据库读取所有值并显示到recyclerview中?

android - 在 Recyclerview 中滚动后 Imageview 不在正确的行上

android - Kotlin 委托(delegate)内存使用

android - 按下 "Run"时如何防止Android Studio打开LogCat(选项卡)?

android - 什么在编程上等同于 android :layout_centerInParent ="true" of RelativeLayout?

android - NestedScrollView 内的 RecyclerView 中的 SmoothScrollTo 项目

android - 如何使用 onInterceptTouchEvent 从 RecyclerView 中点击特定 View ?