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