目前我正在处理具有水平滚动的回收器视图。
我有一个包含这些值的列表:
{ “2001”, “2002”, “2003”, “2004”, “2005”, “2006”, “2007”, “2008”, “2009”, “2010”,...}
等等,直到2017年
我的目标是在中心
上选择年份一切正常,但我有两个问题:
我无法滚动到右边缘,就像recyclerview对滚动有限制一样。假设最后4项是"2014", "2015", "2016", "2017"
。我只能滚动到“2003”。现在我通过在列表之前和之后添加虚拟年份来解决此问题。 (非常hackish,但不是那么坚固)
我想在滚动到达结尾时显示第一个孩子。例如,当我能够滚动到结束 2017 时,我想在 2017 旁边显示列表的第一项,在这种情况下是 “2001”即可。例如:2013 | 2014 | 2015年| 2016 | 2017年| 2001 | ...
答案 0 :(得分:0)
你应该在这里使用循环你的recyclerview
您的适配器中的覆盖getItemCount()以返回类似Integer.MAX_VALUE的内容:
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
在onBindViewHolder()模数除以(%)位置按实际项目编号:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
int positionInList = position % dataList.size();
Item item = dataList.get(positionInList);
//...
}
最后,将当前项目设置为中间的某个项目(否则,只有向下方向才会是无穷无尽的。)
// scroll to middle item
recyclerView.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2);
答案 1 :(得分:0)
根据上面的回复,您无法将recyclelerview滚动为圆圈,从最后一个项目到第一个项目。因此,您必须准确计算元素的数量并覆盖回收视图的ontouch拦截,以达到您想要的效果。
答案 2 :(得分:0)
试试这个,
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
recyclerView.getLayoutManager().scrollToPosition(5);
你可以把你的物品编号放在5的位置,可以做(list.size() - 3)特定年份。