Android - 当位置改变时使用监听器从 recyclerview 获取当前位置

标签 android android-recyclerview

我正在使用带有 snaphelper 的 recyclerview。 这是我的回收 View :

    final LinearLayoutManager lm = new LinearLayoutManager(getContext(), 
    LinearLayoutManager.HORIZONTAL, false);

    recyclerview.setLayoutManager(lm);

    final PagerSnapHelper snapHelper = new PagerSnapHelper();
    snapHelper.attachToRecyclerView(recyclerview);

当用户滚动到另一个单元格时,我需要对新的单元格位置做一些事情。

这就是我为了得到这个职位所做的:

        recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if (newState != RecyclerView.SCROLL_STATE_IDLE) {
                return;
            }
            if recyclerview == null) {
                return;
            }
             //recyclerview.clearOnChildAttachStateChangeListeners();
            int firstVisible = ((LinearLayoutManager) viewerRv.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
            if (firstVisible == RecyclerView.NO_POSITION) {
                return;
            }

          doSomething(firstVisible);
       }

问题是 firstVisible var 并不总是给我正确的位置,例如当我从位置 0 滚动到 9 时,这可能是输出: 0,1,2,3,4,4,5,9

还有另一种方法可以得到正确的当前位置吗?

最佳做法是什么?

最佳答案

这是我的解决方案:

        recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            final int offset = topRv.computeHorizontalScrollOffset();
            if (offset % myCellWidth == 0) {
                final int position = offset / myCellWidth ;
            }
        }
    });

这个解决方案不断地给我当前位置

关于Android - 当位置改变时使用监听器从 recyclerview 获取当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653770/

相关文章:

android.intent.action.SCREEN_ON 不能用作接收器 Intent 过滤器

android - 在 SearchView 中搜索项目后,recyclerview 列表未更新

Android map 查看错误: You are only allowed to have a single MapView in a MapActivity

安卓后台问题

android - URI 未注册 Android studio 错误

android - 从 LiveData 加载后 FastAdapter 闪烁,即使数据保持不变

android - 如何使用 RecyclerView Adapter 处理选项卡 fragment 中的按钮单击?

Android LinearSnapHelper - 如何提高滚动/"snapping"的速度?

android - 分页库 3.0 : How to pass total count of items to the list header?

android - 如何处理构建过程中自动生成的源代码文件