如何创建无限循环的RecyclerView,同时还能以编程方式滚动到项目?

时间:2017-03-16 12:38:02

标签: android android-layout android-recyclerview infinite-scroll

我想创建一个无限滚动的RecyclerView,同时还能够以编程方式滚动到项目。

目前我使用这种hacky方法无限制地使用RecyclerView循环:https://stackoverflow.com/a/31254146/7443375

即。覆盖我的适配器

@Override
public int getCount() {
    return Integer.MAX_VALUE;
}

在我的适配器中获取项目的位置,如下所示:

    int positionInList = position % fragmentList.size();

然后像这样初始化我的RecyclerView的滚动位置:

recyclerView.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2);

但是,在我的具有RecyclerView的Fragment中,我希望能够滚动到列表中的特定项目(即10个项目列表中的项目3)。当我打电话

recyclerView.getLayoutManager().scrollToPosition(2);

列表进入无限卷轴。我无法弄清楚如何去找具体项目。

此外,如何确保特定项目在屏幕中居中?我在滚动时使用LinearSnapHelper捕捉屏幕中心的项目,但在以编程方式设置位置时,LinearSnapHelper似乎不起作用。

1 个答案:

答案 0 :(得分:0)

试试这种方式..

    recyclerView.post(new Runnable() {
                        @Override
                        public void run() {
                                new CountDownTimer(Integer.MAX_VALUE, 20 ) {
                                    public void onTick(long millis) {
                                        recyclerView.scrollBy(0, 20);
                                    }

                                public void onFinish() {

                                }
                            }.start();
                        }
                    });