说明:我正在开发一个具有该功能的演示,用户可以从水平Recyclerview
项中选择一个选项。在这方面,我陷入了以下问题。
查询:
1: 如何让Recyclerview
循环播放?
例如,我有10个名为1,2,3,4,5,6,7,8,9,10的项目。现在,如果用户滚动Recyclerview,那么他/她将无限滚动它。即1,2,3,4,5 ... 9,10,1,2 ... 9,10,1,2,3..9,10这样的。 为实现这一点,我使用了this answer。它以某种方式起作用,但只是向前发展。
2: 如何将Snap中心提供给用户选择的特定项目?
例如:如图所示,如果用户点击' 15'那个项目将来到中心。与用户点击' 07'相同然后它应该到达中心位置。 我已经实施了this demo。但是点击该项目并不起作用。
到目前为止,我所做的代码如下:
布局管理器:
final CenterZoomLayoutManager mLayoutManager = new CenterZoomLayoutManager(mContext,
CenterZoomLayoutManager.HORIZONTAL, false);// To get centered item zoom
recyclerview.setLayoutManager(mLayoutManager);
适配器对象:
mAdapter = new CustomAdapter(mContext, arrayList, new RecyclerViewClickListener() {
@Override
public void recyclerViewListClicked(View v, int position) {
}
});
recyclerview.setAdapter(mAdapter);
任何帮助表示赞赏! 感谢。
答案 0 :(得分:0)
CarouselView 可能符合您的要求。请查看以下GitHub链接。
答案 1 :(得分:0)
How do I create a circular (endless) RecyclerView?
没有办法让它变得无限,但有一种方法可以实现它 看起来像无限。
你的适配器中的重写getCount()以返回大的东西 Integer.MAX_VALUE的:
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
在getItem()和getView()模块中按实际项目划分(%)位置 号:
@Override
public Fragment getItem(int position) {
int positionInList = position % fragmentList.size();
return fragmentList.get(positionInList);
}
最后,将当前项目设置为中间的某个项目(否则,它 只有在向下的方向才会是无穷无尽的。)
// scroll to middle item
recyclerView.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2);
用于捕捉 使用SnapHelper或scrollToPositionWithOffset,其中offset是(width / 2 - itemWidth / 2)