如何在Recycler视图中实现更多负载? 我在列表中获得500项,但我想限制为20项。在使用progresbar进行更多加载时,我想显示接下来的20个项目...继续流程。
在我的活动中,我将产品添加到列表
Call<NextUrl> call = api.getSubCatogeryProducts(url);
call.enqueue(new Callback<NextUrl>() {
@Override
public void onResponse(Call call, Response response) {
progressBar.setVisibility(View.VISIBLE);
NextUrl responseData = (NextUrl) response.body();
String displayResponse;
if (response.isSuccessful()) {
displayResponse = "";
for (int j = 0; j <20; j++) {
productAttributes = responseData.getProductInfoList().get(j).getProductBaseInfo().getProductAttributes();
sendingproducts.add(productAttributes);
}
mDataAdapter = new DataAdapter(sendingproducts, recyclerView);
progressBar.setVisibility(View.GONE);
recyclerView.setAdapter(mDataAdapter);
Toast.makeText(TestActivity.this, "loading data", Toast.LENGTH_SHORT).show();
} else {
progressBar.setVisibility(View.GONE);
Toast.makeText(TestActivity.this, "Un Successful", Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
}
@Override
public void onFailure(Call call, Throwable t) {
progressBar.setVisibility(View.GONE);
Toast.makeText(DashboardActivity.context, " failed to get the data", Toast.LENGTH_LONG).show();
}
});
}
加载更多列表器
mDataAdapter.setOnLoadMoreListener(new OnLoadMoreListner() {
@Override
public void onLoadMore() {
//add null , so the adapter will check view_type and show progress bar at bottom
sendingproducts.add(null);
mDataAdapter.notifyItemInserted(sendingproducts.size() - 1);
handler.postDelayed(new Runnable() {
@Override
public void run() {
// remove progress item
sendingproducts.remove(sendingproducts.size() - 1);
mDataAdapter.notifyItemRemoved(sendingproducts.size());
//add items one by one
int start = sendingproducts.size();
int end = start + 20;
if(end<=sendingproducts.size()){
sendingproducts.addAll(sendingproducts.subList(start,end));
mAdapter.notifyItemInserted(sendingproducts.size());
}
mDataAdapter.setLoaded();
//or you can add all at once but do not forget to call mAdapter.notifyDataSetChanged();
}
}, 2000);
}
});
}
在适配器
中 recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int total = linearLayoutManager.getItemCount();
int firstVisibleItemCount = linearLayoutManager.findFirstVisibleItemPosition();
int lastVisibleItemCount = linearLayoutManager.findLastVisibleItemPosition();
//to avoid multiple calls to loadMore() method
//maintain a boolean value (isLoading). if loadMore() task started set to true and completes set to false
if (!loading) {
if (total > 0)
if ((total - 1) == lastVisibleItemCount) {
//当达到条件时,它会在这里崩溃意味着total-1 = lastvisibleitemcount = 20 //
onLoadMoreListener.onLoadMore();
} else
Log.e("ok","okokokokokokoko");
}
}
请帮助。
答案 0 :(得分:0)