Android数据绑定组件RoboBinding使用详解

RoboBinding简介

RoboBinding是一款基于Android的数据绑定组件,它可以帮助你编写可读性强、容易测试以及性能优越的Android UI应用。RoboBinding有以下几个特点:

  • 为了精简框架,RoboBinding移除了大量不必要的代码,比如addXXListener(),findViewById()等。
  • 可以将难以测试的Android代码转换为普通的JUnit测试。
  • 提供对象类型Cursor来替换 - 关系类型Cursor,因为我们已经习惯于操作对象 。
  • 可以很容易的为任何自定义组件,第三方组件或Android widget编写属性绑定实现,简化代码,使项目易于维护。

下面我们通过一个小例子来学习RoboBinding的使用方法。

RoboBinding使用方法

布局代码:

<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>

presentation models:

@org.robobinding.annotation.PresentationModel
public class PresentationModel implements HasPresentationModelChangeSupport {
    private String name;
    public String getHello() {
        return name + ": hello Android MVVM(Presentation Model)!";
    }
    ...
    public void sayHello() {
        firePropertyChange("hello");
    }
}

Activity代码

Activities将应用布局和展现层数据绑定在一起,MainActivity.java的代码如下:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        PresentationModel presentationModel = new PresentationModel();
        View rootView = Binders.inflateAndBindWithoutPreInitializingViews(this, R.layout.activity_main, presentationModel);
        setContentView(rootView);
    }
}

更多关于RoboBinding的使用,可以访问其在Github上的主页。

转自:http://www.codeceo.com/article/android-robobinding.html

RoboBinding一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架。从简单的角度看,他移除了如addXXListener(),findViewById()这些不必要的代码,连如BufferKnife那样的InjectView都不需要,因为你的代码一般不需要依赖于这些界面组件信息。下面以一个最简单的AndroidMVVM为例。 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: Presentation Model: public class PresentationModel extends AbstractPresentationModel {     private String name;     public String getHello() {         return name   ": hello Android MVVM(Presentation Model)!";     }     ...     public void sayHello() {         firePropertyChange("hello");     } } Activity将layout与对应的presentation model绑定在一起。 public class MainActivity extends Activity {     @Override     protected void onCreate(Bundle savedInstanceState) {         ...         PresentationModel presentationModel = new PresentationModel();         View rootView = Binders.inflateAndBindWithoutPreInitializingViews(this, R.layout.activity_main, presentationModel);         setContentView(rootView);     } } 这样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模式原始例子基于RoboBindingAndroid翻译版本。 3.Gallery,是用于展示RoboBinding的各种特性的使用包含Fragment, Menu, ViewPager等。 项目的中文文档地址是:http://robobinding.github.io/RoboBinding/index.zh.html 标签:RoboBinding
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值