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

标签 java android android-fragments android-recyclerview

我正在尝试将分页添加到 viewpager 内的 fragment (由 recyclerview 组成)。 完美运行 .
案例:
我单击任何项​​目(打开一个 Activity ,即 detailView),但在从 detailView 返回到包含 recyclerview 的 fragment 后,分页停止工作。
fragment 代码

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 ( fragment )
pageNumber = Integer.parseInt(sharedPreferenceUtil.getStringPreference(Constants.TEMPPAGENO, String.valueOf(pageNumber)));
pageNumber++;
discoverRecyclerAdapter.showLoading();
loadPosts();
OnStop( fragment )
@Override
public void onStop() {
    super.onStop();
    recyclerView.removeOnScrollListener(recyclerViewOnScrollListener);
    if (getPosts != null && !getPosts.isCanceled())
        getPosts.cancel();
}
开启 onPause( fragment )
@Override
public void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(mContext).unregisterReceiver(postEventReceiver);
    LocalBroadcastManager.getInstance(mContext).unregisterReceiver(profileEventReceiver);
}

最佳答案

由于您要删除 onScrollListeneronStop您应该将其添加回 onStart()

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

关于java - 在recyclerview中打开项目后分页不起作用 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68857909/

相关文章:

java - 在java泛型类中将Integer转换为int

java - 单击 Spinner 时显示 DialogFragment

android - 如何在抽屉导航布局中创建多级菜单

android - Facebook在android中的 fragment 登录

java - WebView触发activity.java中的函数

java - Java 中的泛型 - 实例化 T

java - 为什么JavaFX不能用.jar文件打包?

android - 实体修改器不工作(AndEngine/Android)

javascript - 向 Android 设备发送通知。已发送但未收到

java - 如何在java中的多个类中使用一个接口(interface)?