在循环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)