gpt4 book ai didi

Android如何获得用户滚动到项目的recyclerview的当前位置

转载 作者:IT老高 更新时间:2023-10-28 22:20:30 26 4
gpt4 key购买 nike

在我的 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

最佳答案

您正在尝试获取有关错误对象的信息。这不是 RecyclerView 也不是 Adapter 的责任,而是 RecyclerView 的 LayoutManager。

而不是通用的 ViewTreeObserver.OnScrollChangedListener() 我建议改为添加 RecyclerView.OnScrollListener 并使用 onScrollStateChanged(RecyclerView recyclerView, int newState) 回调给你 newState,你应该使用 SCROLL_STATE_IDLE 来获取它的位置。含义:

yourRecyclerView.getLayoutManager().findFirstVisibleItemPosition();

As Rik van Velzen pointed out, you probably need to cast your LayoutManager to a LinearLayoutManager or GridLayoutManager (you have to cast to the correct type you are using) to access these findVisibleXXXX() methods.

关于回调方法。希望我对你说得足够清楚,你可以在这里找到关于这些类的文档:

RecyclerView.OnScrollListener

yigit's (Google) response on visible positions

关于Android如何获得用户滚动到项目的recyclerview的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38247602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com