Android中的recyclerView分页

时间:2018-08-04 12:22:49

标签: android android-studio android-recyclerview pagination android-volley

我正在使用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));

                    }
            }

这是我的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);
}

}

0 个答案:

没有答案