如何在 RecyclerView 中追加下一个新项目?

How to append next new items in RecyclerView?

我正在使用 RecyclerView 实现 StaggeredGridView 适配器。如何使用 Spinner 附加从 RecyclerView 中的服务器获取的下一个项目。我正在使用以下但它没有附加它覆盖以前的数据。

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            visibleItemCount = mStaggeredGridLayoutManager.getChildCount();
            totalItemCount = mStaggeredGridLayoutManager.getItemCount();
            int[] firstVisibleItems = null;
            firstVisibleItems = mStaggeredGridLayoutManager.findFirstVisibleItemPositions(firstVisibleItems);
            if (firstVisibleItems != null && firstVisibleItems.length > 0) {
                pastVisibleItems = firstVisibleItems[0];
            }

            if (loading) {
                if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
                    loading = false;
                   ...//  Some Async call to backend
                   AsyncCall.onSuccess(Response response){
                     mAdapter.addItems(response);
                     mAdapter.notifyDataSetChanged();
                }
            }
        }
    });

它不起作用:mAdapter.addItems(response)。我需要指定附加项目的最后位置吗?

如何在添加 new itemsscrolldown 之间加载微调器?

编辑

AddItems 代码

 public void addItems(List<Model> response) {
    size = response.size();
    model = response;
}

编辑-2

顺便说一句,我试图在 AsyncCall.onSuccess:

之前添加这段代码
 mProgressBar = (ProgressBar) mActivity.findViewById(R.id.progress_bar);

 mProgressBar.setBackgroundColor(Color.parseColor("#ff3c3f41"));
 mProgressBar.setVisibility(View.VISIBLE);
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

    </ListView>
    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:indeterminate="true"
        android:visibility="gone"/>

</LinearLayout>

你做一个类似这样的布局,在底部你保持进度条不可见,当你从服务器加载数据时你所要做的就是在进度条上调用setVisibility。

对于问题的第一部分,只需将代码更改为此即可。您的代码的问题在于,即使您调用函数 addItems,它也不会完全将项目添加到您的模型列表中,而是将其替换为您应该在列表上使用 .addAll() 函数将项目从列表添加到另一个列表的响应。如果您无权访问 addAll 函数,只需遍历响应列表并将每个项目添加到模型列表中。

public void addItems(List<Warehouse> response) {
    size = warehouses.size() + response.size();
    warehouses.addAll(response);
}