在循环Recyclerview android中捕捉中心onItemClick

Posted

技术标签:

【中文标题】在循环Recyclerview android中捕捉中心onItemClick【英文标题】:Snap center onItemClick in cyclic Recyclerview android 【发布时间】:2018-07-16 20:56:49 【问题描述】:

描述:我正在开发一个演示,用户可以从水平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);

感谢任何帮助! 谢谢。

【问题讨论】:

【参考方案1】:

CarouselView 可以满足您的要求。请检查以下 GitHub 链接是否相同。

https://android-arsenal.com/details/1/1481

https://github.com/nicklockwood/iCarousel

https://www.pocketmagic.net/a-3d-carousel-view-for-android/

https://github.com/clkasd/CarouselViewProject

【讨论】:

【参考方案2】:

How do I create a circular (endless) RecyclerView?

没有办法让它无限,但有办法让它 看起来像无穷大。

在您的适配器中覆盖 getCount() 以返回类似 整数.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)

【讨论】:

【参考方案3】:

我可以使用这个库 您可以通过个性化此库来解决您的问题。通过选择每个项目,您可以使用 ScrollToX 函数导航到该项目。

https://github.com/mahdimoaz/RecyclerViewHorizontalCenterSelected

【讨论】:

以上是关于在循环Recyclerview android中捕捉中心onItemClick的主要内容,如果未能解决你的问题,请参考以下文章

Android学习之Fragment的各种实现功能(头部折叠,循环列表RecyclerView,左右滑动ViewPager)

Android学习之Fragment的各种实现功能(头部折叠,循环列表RecyclerView,左右滑动ViewPager)

Android——RecyclerView的使用

如何在 RecyclerView 中填充整个屏幕

Android TV中实现RecyView循环功能

如何创建一个循环(无尽的)RecyclerView?