2

I try implement staggered RecyclerView. I create Abstract onScroll RecyclerView Like this :

@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();

and I implenting by MainActity

//===============    
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();
                }
            }

        });

But I getting error in line :

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

log :

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)

so how to fix it ? or any solution ? sorry for my english.

Tunaki
  • 116,530
  • 39
  • 281
  • 370
Amay Diam
  • 2,299
  • 6
  • 30
  • 53

2 Answers2

2

I use this Mugen for endless scrolling for StaggeredGrid with RecyclerView.

Amay Diam
  • 2,299
  • 6
  • 30
  • 53
-1

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

 firstVisibleItem  = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); and try.
Adarsh Yadav
  • 3,444
  • 3
  • 18
  • 45
  • getting error ``java.lang.ClassCastException: android.support.v7.widget.StaggeredGridLayoutManager cannot be cast to android.support.v7.widget.LinearLayoutManager`` – Amay Diam Jul 28 '15 at 05:40
  • cannot resolve method ``findFirstVisibleItemPosition`` – Amay Diam Jul 28 '15 at 05:46