使用Recyclerview中的滑动刷新方法加载上一页注释

时间:2017-05-03 12:05:07

标签: android android-recyclerview recycler-adapter

我想知道如何使用swipe to refresh方法在recyclerview上加载上一页项目。似乎无处可寻。我创建了一个包含无尽的Recyclerview的应用程序,其中包含来自在线论坛的数据。当用户一直向下滚动到底部时,它将加载下一页并在recyclerview上填充下一条注释。它工作正常。

现在我想实现相同的功能,但在用户滚动到顶部时加载上一页。我希望用户进行滑动,这将加载上一页并使用顶部的先前注释填充recyclerview。我怎么做?

MainActivity.java

private ArrayList<CommentItem> commentsList = new ArrayList<CommentItem>();
private RecyclerAdapter adapter_thread;
private int pageNumber = 1;

//recyclerview initialization have been done here

adapter_replies.setOnLoadMoreListener(new OnLoadMoreListener() {
        @Override
        public void onLoadMore() {

            commentsList.add(null); //to show progressbar at the bottom while loading the next page
            adapter_thread.notifyItemInserted(commentsList.size() - 1);
            ++pageNumber;
            getComments(); //async task load next page comments

        }
    });

RecyclerAdapter.java

private boolean loading;
private OnLoadMoreListener onLoadMoreListener;
private int visibleThreshold = 1;

public RecyclerAdapter(Context context, final ArrayList<CommentItem> commentsList, RecyclerView recyclerView) {
this.commentsList= commentsList;
this.context = context;

if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {

    final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView
            .getLayoutManager();


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

                    totalItemCount = linearLayoutManager.getItemCount();
                    lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
                    firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
                    verylastVisibleItem = linearLayoutManager.findLastCompletelyVisibleItemPosition();

                    if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {

                        if (onLoadMoreListener != null) {
                            onLoadMoreListener.onLoadMore();

                        }

                        loading = true;

                    }

                }
            });

}

}

0 个答案:

没有答案