当前位置: 首页 > 知识库问答 >
问题:

Android如何获取回收器当前位置查看用户滚动到项目

白禄
2023-03-14

在我的recyclerview中,我有一些项目,用户可以滚动查看。现在我想保存这个位置,回来后滚动那个位置。下面的代码总是返回0,我不能保存它:

recyclerMarketLists.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
    @Override
    public void onScrollChanged() {
        recyclerViewCurrentScrolledPosition = recyclerMarketLists.getScrollY();
        Log.e("Y: ", recyclerViewCurrentSceolledPosition + "");
    }
});

logcat:

07-07 18:28:30.919 2124-2124/com.sample.presentationproject E/Y:: 0

共有1个答案

丁鹏鹍
2023-03-14

您试图获取错误对象的信息。这不是RecyclerView适配器的责任,而是RecyclerView的LayoutManager。

不使用一般的ViewTreeObserver.OnScrollChangedListener(),我建议添加RecyclerView.OnScrollListener并使用OnScrollStateChanged(RecyclerView RecyclerView,int newState)回调,它提供newState,您应该使用Scroll_State_Idle获取其位置。含义:

yourRecyclerView.getLayoutManager().findFirstVisibleItemPosition();

正如Rik van Velzen指出的,您可能需要将LayoutManager强制转换为LinearLayoutManagerGridLayoutManager(您必须强制转换为您正在使用的正确类型)来访问这些FindVisibleXXXX()方法。

在所述回调方法上。希望我已经把这一点讲得足够清楚了,您可以在这里找到有关这些类的文档:

RecyclerView.OnScrollListener

 类似资料:
  • 所以,这就是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为消失。现在,当它们被点击时,我想让它们再次可见。所以在onClick方法中,我将视图设置为Visible。一切正常,但是当我向下滚动和向上滚动时,视图又隐藏了。我想这和取景模式有关。我想保持现状,即开放。我该怎么做?谢了。 视图支架: 点击: 编辑:上传的代码。此外,我尝试在onClick中更新Item的布尔值

  • 如果recyclerview中的第一个/最后一个完全可见的项目位于嵌套滚动视图中,并且recycler具有,可以与recyclerview上方的其他视图平滑滚动,那么如何获取该项目。 所有这些功能

  • 问题内容: 我在使用android定位系统的NETWORK提供程序获取当前位置坐标时遇到麻烦。 已经阅读了很多教程,并为我的项目实现了4到5个现有的类,所有这些类都给了我最后的坐标,而不是当前的坐标。 我很确定这个问题是我遗漏的根本问题,但是我无法理解到底是什么。 我现在正在使用的代码: 这是我的主要活动 这是我用于跟踪的课程: 这是我的AndroidManifest.xml 实际上,GPS定位工

  • 问题内容: 是否可以获取当前滚动位置或React Native中组件的当前页面? 所以像这样: 问题答案: 尝试。 然后:

  • 我有一个像这样的简单回收视图: 我在片段中的方法中添加了除法器: 我还有一个简单的适配器来保存这些项目。问题是,在我向上或向下滚动recyclerView之前,分隔线是不可见的。我试过了: 通过使用方法以编程方式滚动到最后一项和更新适配器中的项后的第一项。 添加NestedScrollView作为父级并滚动 通过对scrollView进行编程。 没什么帮助。分隔符仅在物理滚动后可见。最奇怪的是,我