我有RecycleView,它显示了admob项目的数量,它运行良好,但我想实现分页功能,我试图实现,但我没有成功,我的代码如下所示
Home.Java
recycleFeedList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) //check for scroll down
{
visibleItemCount = mLinearLayoutManager.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
pastVisiblesItems = mLinearLayoutManager.findFirstVisibleItemPosition();
if (loading) {
LogUtils.LOGD("LastPage:", lastPage + "");
LogUtils.LOGD("visibleItemCount:", visibleItemCount + "");
LogUtils.LOGD("pastVisiblesItems:", pastVisiblesItems + "");
LogUtils.LOGD("totalItemCount:", totalItemCount + "");
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
loading = false;
getFeedList(2, "", 1, lastPage);
}
}
}
}
});
我的适配器如下:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
RecyclerViewFeedItem recyclerViewFeedItem = (RecyclerViewFeedItem) viewHolder.itemView;
recyclerViewFeedItem.bind(mContext, items, position, this, REQUEST_CODE);
}
答案 0 :(得分:0)
你可以这样做:
int currentPage = 1;
class OnScrollListener extends RecyclerView.OnScrollListener
{
int firstVisibleItem;
int visibleItemCount;
int totalItemCount;
private int previousTotal = 0;
private boolean loading = true;
private int visibleThreshold = 5;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
if (dy > 0)
{
visibleItemCount = layoutManager.getChildCount();
totalItemCount = layoutManager.getItemCount();
firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
if (loading)
{
if (totalItemCount > previousTotal)
{
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading &&
(totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold))
{
currentPage++;
//here you load next page, e.g.: load(currentPage);
footer.setVisibility(View.VISIBLE);
loading = true;
}
}
}
}
用法:
recyclerView.addOnScrollListener(new OnScrollListener());