findFirstVisibleItemPositions不适用于recycleview android

编程入门 行业动态 更新时间:2024-10-09 11:20:05
本文介绍了findFirstVisibleItemPositions不适用于recycleview android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有这段代码:

mRecycleView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int[] firstVisibleItemPositions = new int[getResources().getInteger(R.integer.news_numbers_column)]; int pastVisiblesItems = ((StaggeredGridLayoutManager)getLayoutManager()).findFirstVisibleItemPositions(firstVisibleItemPositions)[0]; } });

当我滚动我的recycleview时出现此错误:

When I scroll my recycleview I get this error:

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.support.v7.widget.OrientationHelper.getStartAfterPadding()' on a null object reference at android.support.v7.widget.StaggeredGridLayoutManager$Span.findOneVisibleChild(StaggeredGridLayoutManager.java:2177) at android.support.v7.widget.StaggeredGridLayoutManager$Span.findFirstVisibleItemPosition(StaggeredGridLayoutManager.java:2153) at android.support.v7.widget.StaggeredGridLayoutManager.findFirstVisibleItemPositions(StaggeredGridLayoutManager.java:806) at info.lanouvelletribune.apps.android.ui.fragments.NewsFragment$1.onScrollStateChanged(NewsFragment.java:90) at android.support.v7.widget.RecyclerView.setScrollState(RecyclerView.java:751) at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:1535) at com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView.onInterceptTouchEvent(ObservableRecyclerView.java:188) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2060) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2390) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1741) at android.app.Activity.dispatchTouchEvent(Activity.java:2826) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2351) at android.view.View.dispatchPointerEvent(View.java:8590) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4098) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3964) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3488) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3541) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3507) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3515) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3488) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3541) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3507) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3617) at android

如何处理此错误并获得第一个可见项目位置?

How can I do to handle this error and get the first visible item position?

推荐答案

我测试了它这段代码和我一起工作

I tested it with this code and it works fine with me

int positionView = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();

我使用了循环视图参数。

I used the recycle view parameter.

更多推荐

findFirstVisibleItemPositions不适用于recycleview android

本文发布于:2023-11-27 11:12:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637834.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不适用于   findFirstVisibleItemPositions   android   recycleview

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!