Snap center onItem Click in cyclic Recyclerview android

时间:2018-02-06 17:50:27

标签: android android-layout android-recyclerview recycler-adapter

说明:我正在开发一个具有该功能的演示,用户可以从水平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);

任何帮助表示赞赏! 感谢。

Horizontal Recylerview in which user can select item as an option

2 个答案:

答案 0 :(得分:0)

答案 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)

相关问题