android中的recyclerView分页

android中的recyclerView分页,android,android-studio,android-recyclerview,pagination,android-volley,Android,Android Studio,Android Recyclerview,Pagination,Android Volley,我正在用recyclerView进行分页。这是成功的。但问题是,当重新加载下一页的数据时,整个数据被刷新意味着第一页和其他页面的数据。我希望上一页的数据不应该重新加载或刷新,而是与下一页的数据绑定。我怎么能做到。这是我的片段代码: final JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URLs.viewAllLatestProduct,null, new

我正在用recyclerView进行分页。这是成功的。但问题是,当重新加载下一页的数据时,整个数据被刷新意味着第一页和其他页面的数据。我希望上一页的数据不应该重新加载或刷新,而是与下一页的数据绑定。我怎么能做到。这是我的片段代码:

final JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,
            URLs.viewAllLatestProduct,null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    setLatestProductAdapter(response);
                    progressBar.setVisibility(View.INVISIBLE);
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    VolleySingleton.getInstance(context).addToRequestQueue(request);




private void recyclerPagination() {
 rvLatestProduct.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int 
newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 0) {
                linearLayoutManager = (GridLayoutManager) rvLatestProduct.getLayoutManager();

                    visibleItemCount = recyclerView.getChildCount();
                    totalItemCount = linearLayoutManager
                            .getItemCount();
                    firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();

                    if (loading) {
                        if (totalItemCount > previousTotal) {
                            previousTotal = totalItemCount;
                            page++;
                            loading = false;
                        }
                    }
                    if (!loading && (firstVisibleItem + visibleThreshold + visibleItemCount) >= totalItemCount) {
                        getPagination();
                        loading = true;
                        Log.e("PageNO", String.valueOf(page));

                    }
            }
final JsonArrayRequest=new JsonArrayRequest(request.Method.GET,
viewAllLatestProduct,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
setLatestProductAdapter(响应);
progressBar.setVisibility(View.INVISIBLE);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
getInstance(上下文).addToRequestQueue(请求);
私人作废回收商标签(){
rvLatestProduct.addOnScrollListener(新的RecyclerView.OnScrollListener(){
@凌驾
CrollStateChanged上的公共无效(RecyclerView RecyclerView,int
新闻状态){
super.onScrollStateChanged(recyclerView、newState);
}
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
如果(dy>0){
linearLayoutManager=(GridLayoutManager)rvLatestProduct.getLayoutManager();
visibleItemCount=recyclerView.getChildCount();
totalItemCount=linearLayoutManager
.getItemCount();
firstVisibleItem=linearLayoutManager.findFirstVisibleItemPosition();
如果(装载){
如果(totalItemCount>previousTotal){
previousTotal=totalItemCount;
page++;
加载=假;
}
}
如果(!loading&&(firstVisibleItem+visibleThreshold+visibleItemCount)>=totalItemCount){
getPagination();
加载=真;
Log.e(“页码”,String.valueOf(第页));
}
}
下面是我的getPagination:

private void getPagination(){
   final StringRequest request = new StringRequest(Request.Method.POST,
    URLs.viewAllLatestProduct,
    new Response.Listener<String>() {
        @Override
        public void onResponse(final String response) {
            progressBar.setVisibility(View.VISIBLE);
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                    JSONArray object = null;
                    try {
                        object = new JSONArray(response);
                        setLatestProductAdapter(object);
                        adapter.notifyDataSetChanged();
                        progressBar.setVisibility(View.INVISIBLE);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    }
                },5000);

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError e) {
            e.printStackTrace();
        }
    }){@Override
    public Map<String, String> getParams(){
        Map<String, String> params = new HashMap<>();
        params.put("page", String.valueOf(page));
        return params;
    }
    };
    VolleySingleton.getInstance(context).addToRequestQueue(request);
}
private void getPagination(){
最终StringRequest=新StringRequest(request.Method.POST,
URL.viewAllLatestProduct,
新的Response.Listener(){
@凌驾
公共void onResponse(最终字符串响应){
progressBar.setVisibility(View.VISIBLE);
最终处理程序=新处理程序();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
JSONArray对象=null;
试一试{
对象=新JSONArray(响应);
setLatestProductAdapter(对象);
adapter.notifyDataSetChanged();
progressBar.setVisibility(View.INVISIBLE);
}捕获(JSONException e){
e、 printStackTrace();
}
}
},5000);
}
},new Response.ErrorListener(){
@凌驾
公众回应(截击错误){
e、 printStackTrace();
}
}){@覆盖
公共映射getParams(){
Map params=新的HashMap();
参数put(“page”,String.valueOf(page));
返回参数;
}
};
getInstance(上下文).addToRequestQueue(请求);
}

}

重新加载下一页是什么意思?如何重新加载?意味着当我重新加载第2页的数据时,此数据将填充第一页,而不是刷新所有数据。执行重新加载的代码在哪里?请参阅我更新的问题。我正在从getPagination方法向服务器发送下一页的请求。我认为问题在于您通知dataset更改所有适配器,使其重新加载所有列表项