2016年8月2日星期二

RecycleView GridLayoutManager中的 加载更多

public abstract class BaseScrollListener extends RecyclerView.OnScrollListener {

    protected RecyclerView.LayoutManager layoutManager;
    public BaseScrollListener(RecyclerView.LayoutManager layoutManager) {

        this.layoutManager = layoutManager;
        this.init();    }

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

        super.onScrolled(recyclerView, dx, dy);
        this.onScroll(recyclerView, this.getFirstVisibleItem(), this.layoutManager.getChildCount(), this.layoutManager.getItemCount(), dx, dy);    }

    private int getFirstVisibleItem(){

        if(this.layoutManager instanceof LinearLayoutManager){

            return ((LinearLayoutManager) this.layoutManager).findFirstVisibleItemPosition();        } else if (this.layoutManager instanceof StaggeredGridLayoutManager){

            int[] spanPositions = null; //Should be null -> StaggeredGridLayoutManager.findFirstVisibleItemPositions makes the work.
            try{

                return ((StaggeredGridLayoutManager) this.layoutManager).findFirstVisibleItemPositions(spanPositions)[0];            }catch (Exception ex){

                // Do stuff...            }
        }

        return 0;    }

    public abstract void init();
    protected abstract void onScroll(RecyclerView recyclerView, int firstVisibleItem, int visibleItemCount, int totalItemCount, int dx, int dy);
}

recyclerView.addOnScrollListener(new BaseScrollListener(gridLayoutManager) {
    @Override    public void init() {

    }

    @Override    protected void onScroll(RecyclerView recyclerView, int firstVisibleItem, int visibleItemCount, int totalItemCount, int dx, int dy) {
        MakeContent.getInstance().ContextLoggerInfo("firstVisibleItem:"+firstVisibleItem+" -- "+" visibleItemCount:"+visibleItemCount+" -- "+"totalItemCount:"+totalItemCount);        //더보기        if (firstVisibleItem+visibleItemCount == totalItemCount){
            moreListView();        }
    }
});

没有评论:

发表评论