RecycleView中的Admob与分页

时间:2016-12-26 14:43:19

标签: android pagination android-recyclerview admob

我有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);

        }

1 个答案:

答案 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());