android - 使用 StaggeredLayoutManager 无限滚动?

标签 android android-recyclerview

我尝试实现交错的 RecyclerView。我像这样创建抽象 onScroll RecyclerView :

@Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        int grid_column_count = context.getResources().getInteger(R.integer.grid_column_count);
        StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(grid_column_count, StaggeredGridLayoutManager.VERTICAL);
        int visibleItemCount = recyclerView.getChildCount();
        int totalItemCount = mLayoutManager.getItemCount();
        int firstVisibleItemsGrid[] = new int[grid_column_count];
        int firstVisibleItem = mLayoutManager.findFirstVisibleItemPositions(firstVisibleItemsGrid)[0];


        if ((visibleItemCount + firstVisibleItem ) >= totalItemCount
                && totalItemCount != 0) {
            onLoadingMore();
        }

    }


protected abstract void onLoadingMore();

我通过 MainActivity 实现

//===============    
recyclerview= (RecyclerView)rootView. findViewById(R.id.grid_view);
            recyclerview.setHasFixedSize(true);
            grid_column_count = getResources().getInteger(R.integer.grid_column_count);
            mLayoutManager = new StaggeredGridLayoutManager(grid_column_count, StaggeredGridLayoutManager.VERTICAL);
            recyclerview.setLayoutManager(mLayoutManager);

//=====================

recyclerview.addOnScrollListener(new HidingScrollListener(getActivity()) {

            @Override
            protected void onLoadingMore() {
                if ( isFinishLoadingAwal
                        && !isFinishMoreNews
                        && adapter.getItemCount()> 0) {
                    getMoreNewsFromServer();
                }
            }

        });

但是我在行中遇到了错误:

firstVisibleItem = mLayoutManager.findFirstVisibleItemPositions(firstVisibleItemsGrid)[0];

日志:

Process: com.ad.kamardagang, PID: 23350
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:2337)
        at android.support.v7.widget.StaggeredGridLayoutManager$Span.findFirstVisibleItemPosition(StaggeredGridLayoutManager.java:2313)
        at android.support.v7.widget.StaggeredGridLayoutManager.findFirstVisibleItemPositions(StaggeredGridLayoutManager.java:826)
        at com.ad.kamardagang.utils.HidingScrollListener.onScrolled(HidingScrollListener.java:90)
        at android.support.v7.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:3674)
        at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2824)
        at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3011)
        at android.view.View.layout(View.java:15671)

那怎么解决呢?或任何解决方案? 对不起我的英语。

最佳答案

我用这个Mugen用于使用 RecyclerView 无限滚动 StaggeredGrid。

关于android - 使用 StaggeredLayoutManager 无限滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667535/

相关文章:

java - 我的组件中的空间错误

java - ItemAnimator如何安排动画一个接一个地开始

java - 如何在其余代码之前执行一行代码?更改按钮上的文本

android - 使用两个 Viewholder 在 RecyclerView 中查看重叠

android - 如何为动态 key 解析此类 JSON 数据

android - 如何在改造Android中发送对象数组?

android - SortedList IndexOutOfBoundsException:检测到不一致。删除最后一个项目时的项目位置无效

android - 如何在 RecyclerView ItemDecoration 中获取偏移量

java - 安装斑马 sdk android

android - Xamarin,Android : Using the AdListener right