BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

BaseRecyclerViewAdapterHelper recyclerview 嵌套 recyclerview

Open johncn9 opened this issue 2 years ago • 3 comments

当我在首页多布局

首页

   View view = inflater.inflate(R.layout.fragment_discover_layout, parent, false);
    RecyclerView recyclerView = view.findViewById(R.id.discover_view);
    initRefreshLayout(view);
   discoverAdapter = new DiscoverAdapter(getContext(),allData);
    discoverAdapter.setUseEmpty(false);

// discoverAdapter.isUseEmpty(false); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); // linearLayoutManager.setRecycleChildrenOnDetach(true); recyclerView.setLayoutManager(linearLayoutManager); // recyclerView.setHasFixedSize(true); recyclerView.setAdapter(discoverAdapter); discoverAdapter.notifyDataSetChanged();

多布局adapter public DiscoverAdapter(Context context, List<DiscoverBto> data) { super(data); this.mContext = context; addItemType(DiscoverBto.TYPE_DISCOVER_BANNER, R.layout.layout_discover_banner); addItemType(DiscoverBto.TYPE_DISCOVER_MONTH, R.layout.layout_month_discover_view);

case DiscoverBto.TYPE_DISCOVER_MONTH: RecyclerView discoverMonthView = (RecyclerView) helper.getView(R.id.discover_view_month); if (mContext != null) { DiscoverMonthAdapter storeMonthAdapter = new DiscoverMonthAdapter(R.layout.item_discover_month, item.getMediaList()); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this.mContext); if (discoverMonthView != null && linearLayoutManager != null) { linearLayoutManager.setRecycleChildrenOnDetach(true); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); discoverMonthView.setLayoutManager(linearLayoutManager); discoverMonthView.setHasFixedSize(true);

                    discoverMonthView.setAdapter(storeMonthAdapter);

                    storeMonthAdapter.setOnItemClickListener(new OnItemClickListener() {
                        @Override
                        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {

// ARouter.getInstance().build("/drama/details").navigation();

                            ARouter.getInstance().build("/audio/circle/player").navigation();
                        }
                    });
                }
            } else {
                Log.d("AudioAdapter>>>>", "famous context is null");
            }

此处的多布局 BaseMultiItemQuickAdapter 代码没有问题 但是第一次加载都是空白需要拉一下才能展示

首页

<cn.bingoogolapple.refreshlayout.BGARefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/discover_refresh" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">

<androidx.recyclerview.widget.RecyclerView

    android:layout_marginTop="@dimen/dp_3"
    android:id="@+id/discover_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</cn.bingoogolapple.refreshlayout.BGARefreshLayout>

子页嵌套的recyclerview代码也很简单

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:orientation="vertical"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/doctor_view" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>

开始我以为是数据加载慢了,但是放在内存缓存里依然出现加载空白 布局管理器肯定是设置了,一直出现需要点一下页面或者切换bottombar 就能瞬间展示不明白什么bug,有么有遇到过 代码是照着例子的多布局写的

johncn9 avatar Nov 22 '21 10:11 johncn9

同样的做法换个布局都正常只要使用baserecyclerviewadater 就出现空白

johncn9 avatar Nov 22 '21 10:11 johncn9

没人遇到这种recyclerview 嵌套 不显示 要刷新或者点击才显示内容的问题嘛?

johncn9 avatar Nov 26 '21 07:11 johncn9

我也遇到了,RecyclerView嵌套RecyclerView,子RecyclerView中数据过多的直接显示很高一段空白,数据少的能正常显示

xiaolunan avatar Jan 14 '22 04:01 xiaolunan