【问题标题】:Snap center onItemClick in cyclic Recyclerview android在循环Recyclerview android中捕捉中心onItemClick
【发布时间】: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);

感谢任何帮助! 谢谢。

【问题讨论】:

    标签: android android-layout android-recyclerview


    【解决方案1】:
    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多