MVVM(封装三)

接上篇,data binding 的接入,在某种意义上,使 xml 布局文件从 V 层(Activity)独立出来。V 层不再与 xml 交互 (findViewById,  xxx.setText(), xxx.setEnable) 。而只需关注与 xml 绑定的 vm 里的数据。下图是接入 data binding 后 MVP 的时序图。

data binding 支持在 xml 布局文件里绑定各种事件。比如某点击事件绑定 Presenter 的方法。如此一来,VM 要持有 Presenter对象。而且,实际项目里,点击事件并不是简单的触发一个方法。还包括了千奇百怪的业务需求。为了保持 VM 的整洁性。事件的绑定还是在 V 层,而不是通过 xml 布局文件。

上图可看出:

1,vm 仅包含与 xml 布局文件互相绑定的 LiveData 或 BaseObervable,V 层通过更新 vm的数据来更新界面。

2,Activity, ViewHolder(个人理解), View 都归 V层。xml虽然也是,但如上文说的,已相当独立。

3,控件的各种事件通过 V 层持有的 binding 对象绑定相关事件。如上篇文章说的。

4,双向绑定的实现是通过  根据xml布局文件自动生成的 binding类,将ViewModel 赋值到 xml 定义的data属性里。避免重复代码。这里根据上图定义 V 层不同类型的基类  Activity -----> BaseVmActivity,View -----> BaseBindingView。 ViewHolder 比较特殊。绑定操作是在Adapter,后续单独出来聊聊。

BaseVmActivity, BaseBindingView 思路是一样的,都是通过反射实现。在 《MVVM》 里已经介绍过。这里就简单的贴下代码。

BaseVmActivity:

BaseBindingView :

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容