RoboBinding

Android 数据绑定框架
授权协议 Apache
开发语言 Java
所属分类 手机/移动开发、 Android UI 组件
软件类型 开源软件
地区 国产
投 递 者 诸葛立果
操作系统 Android
开源组织
适用人群 未知
 软件概览

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:onClick="sayHello"/>
</LinearLayout>

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模式原始例子基于RoboBinding的Android翻译版本。

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

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

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

  • RoboBinding是个有年头的MVVM框架,想看他源码好像也有段时间了,终于下定决心看一下了。 看个大概 主要是想了解一下作者的实现思路,鉴于代码实在是太松耦合、类实在太多,也没动力看细节了。 思路 表示,整个框架解耦太厉害了,出现了无数单实现的interface,也就是说,整个框架都是靠着interface联系在一起的。可能这类猿才会做出MVVM+自动化测试的框架吧。 编译时把Present

  • 介绍 一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架。 在没有性能损失的前提下(使用源代码生成来替代Java反射),RoboBinding 帮助你编写更可读,易于测试与维护的UI代码。 通过绑定移除大量不必要的代码(如addXXListener(),findViewById()等) 。 将难于测试的Android代码以及运行过久且不切实际的And

  • @SuppressLint("HandlerLeak") public class TestActivity extends Activity { private Handler mHandler; private PresentationModelChangeSupport changeSupport; @Override protected void onCreate(Bundle

  • RoboBinding简介 RoboBinding是一款基于Android的数据绑定组件,它可以帮助你编写可读性强、容易测试以及性能优越的Android UI应用。RoboBinding有以下几个特点: 为了精简框架,RoboBinding移除了大量不必要的代码,比如addXXListener(),findViewById()等。 可以将难以测试的Android代码转换为普通的JUnit测试。 提

 相关资料
  • 数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </

  • attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),

  • submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt

  • with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span

  • foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中。在foreach绑定中,我们可以使用if、with等嵌套绑定。 示例代码: //.W片段 <table> <thead> <tr><th>First name</th><th>Last name</th></tr> </thead> <tbody bind-foreach="people"> <tr>

  • selectedOptions绑定用在select元素中,用来绑定已选中的对象,通常被用在多选列表中。如果列表为单选列表(下拉列表),选中值可以用value绑定。 示例代码 //.W片段 <p> Choose some countries you'd like to visit: <select bind-options="availableCountries" bind-selectedO

  • options绑定用来绑定select控件的option项,它只能用在select元素中,并且绑定值必须为数组。对于单选的下拉列表,选中值用value绑定;对于多选的列表,选中值用selectedOptions绑定。 示例代码 单选列表 //.W片段 <p> Destination country: <select bind-options="availableCountries"></se

  • uniqueName绑定用来为元素生成一个唯一的name属性,uniqueName绑定不常用到。 应用场景: 第三方js库需要元素有name属性的时候,我们可以使用uniqueName绑定为元素生成一个唯一的name属性。例如在jQuery validation中,就需要元素必须有一个name属性。 IE6下,radio button元素必须具有name属性,否则不能选中。对于radio butt