我想创建一个无限滚动的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似乎不起作用。
答案 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();
}
});