DylanCaiCoding / LoadingStateView

Decoupling the code of toolbar or loading status view. (深度解耦标题栏,解耦加载中、加载失败、无数据等缺省页,支持两行代码集成到基类)
Apache License 2.0
674 stars 53 forks source link

提几个小需求 #24

Closed tanranran closed 2 years ago

tanranran commented 2 years ago

使用全局LoadingStateView.setViewDelegatePool的情况下

1、setOnReloadListener 如何区分不同的类型的LoadingStateView.ViewDelegate【比如加载失败和网络异常】,现在setOnReloadListener 会被覆盖掉 2、如何动态更改LoadingStateView.ViewDelegate中布局的内容,比如加载失败了,根据不同业务,显示不同的错误ICO和错误提示语

DylanCaiCoding commented 2 years ago

第一个是有什么特殊的需求要在不同的状态视图发送不同的重试请求吗?加载失败、网络异常、无数据这些状态通常都是再重新请求布局内容的数据,个人目前觉得是没有必要。

然后你说的两个需求都是动态修改全局的 ViewDelegate,都可以用下面的方式进行处理。

先获取对应类型的 ViewDelegate(没有注册会拿全局的),修改配置变量后调用 notifyDataSetChanged() ,会像 Adapter 一样执行一次 onBindViewHolder()

val loadingViewDelegate: LoadingViewDelegate = loadingStateView.getViewDelegate(ViewType.LOADING)
loadingViewDelegate.msg = "加载中,请稍后"
loadingStateView.notifyDataSetChanged(ViewType.LOADING)

想发不同的请求也是类似的,手动维护一个 listener,不用 holder.onReloadListener。