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

时间:2015-10-27 05:28:23

标签: android spinner android-recyclerview

我正在使用StaggeredGridView实现RecyclerView适配器。如何使用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

BTW我试图在AsyncCall.onSuccess:

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

 mProgressBar.setBackgroundColor(Color.parseColor("#ff3c3f41"));
 mProgressBar.setVisibility(View.VISIBLE);

1 个答案:

答案 0 :(得分:0)

<?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);
}