在 recyclerview 中打开项目后分页不起作用 - Android

Pagination not working after opening an item in recyclerview - Android

我正在尝试将分页添加到 viewpager 内的片段(包含 recyclerview)。 完美运行

案例: 我单击任何项​​目(打开 activity 即 detailView),但在从 detailView 返回到由 recyclerview 组成的片段后,分页停止工作。

片段代码

private int pageNumber = 1;

在 oncreateview 上

   sharedPreferenceUtil.setStringPreference(Constants.TEMPPAGENO, "1");

onScroll 侦听器:

    private RecyclerView.OnScrollListener recyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        RecyclerView.Adapter adapter = recyclerView.getAdapter();
        if (layoutManager.getChildCount() > 0) {
            // Calculations..
            int indexOfLastItemViewVisible = layoutManager.getChildCount() - 1;

            View lastItemViewVisible = layoutManager.getChildAt(indexOfLastItemViewVisible);

            int adapterPosition = layoutManager.getPosition(lastItemViewVisible);

            boolean isLastItemVisible = (adapterPosition == adapter.getItemCount() - 1);

            if (!postType.equals("bookmark") && isLastItemVisible && !isLoading && !allDone) {
                pageNumber++;
                discoverRecyclerAdapter.showLoading();
                loadPosts();

                sharedPreferenceUtil.setStringPreference(Constants.TEMPPAGENO, String.valueOf(pageNumber));

            }
        }

    }
};

loadposts 函数

private void loadPosts() {

    if (postType != null && mContext != null) {
        if (postType.equals("bookmark")) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (discoverRecyclerAdapter.isLoaderShowing())
                        discoverRecyclerAdapter.hideLoading();
                    if (swipeRefreshLayout.isRefreshing())
                        swipeRefreshLayout.setRefreshing(false);

                    discoverRecyclerAdapter.addItemsAtBottom(bookmarkedPosts);
                    if (bookmarkedPosts.isEmpty()) {
                        recyclerView.setVisibility(View.GONE);
                        emptyView.setVisibility(View.VISIBLE);
                    }
                }
            }, 200);
        } else {
            isLoading = true;
            if (TextUtils.isEmpty(userId))
                getPosts = weService.getPosts(sharedPreferenceUtil.getStringPreference(Constants.KEY_API_KEY, null), postType.equals("hot") ? 1 : 0, pageNumber);
            else
                getPosts = weService.getPostsByUserId(sharedPreferenceUtil.getStringPreference(Constants.KEY_API_KEY, null), userId, postType.equals("hot") ? 1 : 0, pageNumber);
            getPosts.enqueue(callBack);
        }
    }
}

onResume(片段)

pageNumber = Integer.parseInt(sharedPreferenceUtil.getStringPreference(Constants.TEMPPAGENO, String.valueOf(pageNumber)));
pageNumber++;
discoverRecyclerAdapter.showLoading();
loadPosts();

on onStop(片段)

@Override
public void onStop() {
    super.onStop();
    recyclerView.removeOnScrollListener(recyclerViewOnScrollListener);
    if (getPosts != null && !getPosts.isCanceled())
        getPosts.cancel();
}

on onPause(片段)

@Override
public void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(mContext).unregisterReceiver(postEventReceiver);
    LocalBroadcastManager.getInstance(mContext).unregisterReceiver(profileEventReceiver);
}

由于您要删除 onStop 中的 onScrollListener,您应该将其重新添加到 onStart()

@Override
public void onStart() {
    recyclerView.addOnScrollListener(recyclerViewOnScrollListener);
    ...
}