android中的recyclerView分页
我正在用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
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更改所有适配器,使其重新加载所有列表项