Android进阶笔记14:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android进阶笔记14:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)相关的知识,希望对你有一定的参考价值。

1.RoboBinding

RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架。从简单的角度看,他移除了如addXXListener(),findViewById()这些不必要的代码,连如BufferKnife那样的InjectView都不需要,因为你的代码一般不需要依赖于这些界面组件信息。下面以一个最简单的AndroidMVVM为例。

(1)layout 布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:bind="http://robobinding.org/android">
    <TextView
        bind:text="{hello}" />
        ...
    <Button
        android:text="Say Hello"
        bind:onClick="sayHello"/>
</LinearLayout>

(2)Presentation Model

 1 public class PresentationModel extends AbstractPresentationModel {
 2     private String name;
 3     public String getHello() {
 4         return name + ": hello Android MVVM(Presentation Model)!";
 5     }
 6     ...
 7     public void sayHello() {
 8         firePropertyChange("hello");
 9     }
10 }

 

(3)Activity将layout与对应的presentation model绑定在一起

1 public class MainActivity extends Activity {
2     @Override
3     protected void onCreate(Bundle savedInstanceState) {
4         ...
5         PresentationModel presentationModel = new PresentationModel();
6         View rootView = Binders.inflateAndBindWithoutPreInitializingViews(this, R.layout.activity_main, presentationModel);
7         setContentView(rootView);
8     }
9 }

这样layout的{hello}与 PresentationModel.hello绑定,layout的sayHello与PresenationModel.sayHello方法绑定。我们不需要在Layout中定义TextView, Button的Id因为我们不关心,且没有必要。当我们进一步观察时,我们发现PresentationModel是一个Pure POJO。这也是为什么软件界的泰斗Martin Fowler在2004年,提出了Presenation Model(MVVM) 模式。它是我们所熟悉的MVC的升级,进一步的把界面状态与逻辑解藕到Presentation Model中。

我们可以通过以下几个示例项目学习RoboBinding使用,他们都可以直接导入Android Studio无需额外配置:

1.AndroidMVVM,最小的RoboBinding使用例子。

2.Album Sample,是Martin Fowler的Presentation Model模式原始例子基于RoboBinding的Android翻译版本。

3.Gallery,是用于展示RoboBinding的各种特性的使用包含Fragment, Menu, ViewPager等。

 

项目的中文文档地址是:http://robobinding.github.io/RoboBinding/index.zh.html

github 地址https://github.com/RoboBinding/RoboBinding

以上是关于Android进阶笔记14:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)的主要内容,如果未能解决你的问题,请参考以下文章

ijkplayer系列14:从入门到进阶问题树梳理

Android进阶笔记:AIDL内部实现详解

进阶篇Android学习笔记——TextInputLayout

进阶篇Android学习笔记——TextInputLayout

Android学习笔记进阶16之BitmapShader

Android攻城狮学习笔记-进阶篇一