BaseRecyclerViewAdapterHelper 3.0.1 setEmptyView() lateinit property weakRecyclerView has not been initialized

px9o7tmv  于 2022-12-31  发布在  其他
关注(0)|答案(2)|浏览(143)

Describe the bug
很喜欢的一个框架,对RecyclerView很方便。首先感谢作者的付出~
之前一直用的2.x,看着3.0出来一段时间了,API和改动较大一直没升级。
今天升级后,发现现在使用setEmptyView()时,必须先RecyclerView.setAdapter之后才能配置(之前习惯都是配置完整Adapter数据后,最后setAdapter),否则报错 kotlin.UninitializedPropertyAccessException: lateinit property weakRecyclerView has not been initialized
降级是不可能降级的,含着泪改了差不多半天。慢慢检查....
关于目前3.0.1,还是很喜欢的,虽然用几年的方式改了一些,但是模块化使用也很舒服。但目前感觉作者还在努力完善中,有些小的api目前还没补上(比如helper.setProgress…,虽然getView可以轻松解决,但对于我这种强迫症来说,等更新了这个方法,估计又得一个个改回去)
平滑升级是不存在的,已有工程无论如何再简单的一个adapter你都需要去一个个改引用包路径,还有2.x升级到3.0的时间成本和测试成本都很大,包路径、类名、方法名,模块化等等,如果你的测试MM脾气不好,谨慎升级,哈哈。考虑下手动升级老的上百个Adapter,改点击事件、改加载更多、改下拉刷新,改完后再几十个页面的测试,特别是容易忽略LoadMoreModule的新特性、setAdapter的设置时机,升级后如果漏掉一两个implements LoadMoreModule会很惨...)

好像,bindToRecyclerView也没有了~~~~

To Reproduce

mAdp = new TestAdapter();
  mAdp.setEmptyView(R.layout.view_dontdata);
  rv.setAdapter(mAdp);

再次感谢作者的付出,用着减轻了太多的代码量~

uyhoqukh

uyhoqukh1#

30版本升级改动很多,愿意大动干戈升级的都是真爱,望能快速迭代及时修复反馈的问题

xxe27gdn

xxe27gdn2#

30版本升级改动很多,愿意大动干戈升级的都是真爱,望能快速迭代及时修复反馈的问题

new Adapter后,先setAdapter就可以了。只是改动量太多了,怕漏下。
主要之前习惯new Adapter后,给Adapter setXXX一堆属性,最后setAdapter,在3.x上这个流程有问题。new了必须马上setAdapter,然后再继续setXXX。

TestAdapter adapter = new TestAdapter();
recyclerView.setAdapter(adapter);
adapter.setEmptyView(R.layout.xxxxx);

相关问题