专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
开发者全社区  ·  奇女子!钓男朋友翻车了 ·  17 小时前  
开发者全社区  ·  上海某国企裁员10% ·  3 天前  
开发者全社区  ·  中国最难入的IT公司 ·  3 天前  
开发者全社区  ·  人大发TT了 ·  3 天前  
51好读  ›  专栏  ›  安卓开发精选

初涉 Rx套餐 之 RxBinding(让你的事件流程更清晰)

安卓开发精选  · 公众号  · android  · 2016-09-13 08:04

正文

(点击 上方公众号 ,可快速关注)


来源:伯乐在线专栏作者 - 王亟亟

链接:http://android.jobbole.com/84596/

点击 → 了解如何加入专栏作者


最近下班回家都在WOW,周末就爆肝,感觉人都要狗带了,昨天下午看了看 RxBinding 相关的功能,感觉还是蛮强大的,所提供的API也是相当丰富(基本Rx套餐都是互通的),然后就把之前的Rx例子翻出来重新写一下。


还是老规矩,先安利:

https://github.com/ddwhan0123/Useful-Open-Source-Android(这礼拜在拆资料/博客/学习那模块,之前叠的有点多,还在分割)


什么是RxBinDing? 有什么作用?(网上相关的介绍也有,我这里整合一下)


JakeWharton 提供了一套在 Android 平台上的基于 RxJava的 Binding API。


类似设置 OnClickListener 、设置 TextWatcher 这样的注册绑定对象的 API。


并对普通的控件,V4,V7等等做了相应的支持。


项目git:

https://github.com/JakeWharton/RxBinding


如何使用依赖RxBinding这里不说了,这里来说下匿名函数的问题


因为谷歌和甲骨文之间搞不清楚所以安卓支持java8的特性需要“特殊操作”,那为什么要用java8特性呢?别的不说,主要是 Lambda ,虽说这玩意可读性差,写起来自己绕晕,但是 省代码,省代码,省代码!!


在众多第三方支持插件里,比较推崇:https://github.com/evant/gradle-retrolambda


理由:不流氓+搭建简单


需要什么?


首先 你得下了java8,没下的话要去下载下,传送门:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


然后在你的gradle里配置如下(截图是怕有写小伙伴贴错地方):




这样就可以用java 8的新特性了。


因为只演示普通控件,所以就用(按钮啊,文本啊,选择框啊什么的都在里面)


compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'


那就简单的搞个输入框,搞个按钮然后输入内容在TextView里显示就行。


废话不多说,直接上代码


public class MainActivity extends AppCompatActivity {

Toolbar toolBar ;

EditText edit ;

TextView result ;

Button btn ;

@Override

protected void onCreate ( Bundle savedInstanceState ) {

super . onCreate ( savedInstanceState );

setContentView ( R . layout . activity_main );

init ();

logic ();

}

private void init () {

setSupportActionBar ( toolBar );

t oolBar = ( Toolbar ) findViewById ( R . id . toolBar );

result = ( TextView ) findViewById ( R . id . result );

edit = ( EditText ) findViewById ( R . id . edit );

btn = ( Button ) findViewById ( R . id . btn );

}

private void logic () {

toolBar . setTitle ( "RxAndroidDemo" );

saveText ();

reFreshText ();

}

private void reFreshText () {

RxTextView . afterTextChangeEvents ( edit ). subscribe ( textViewAfterTextC hangeEvent -> {

result . setText ( textViewAfterTextChangeEvent . editable (). toString ());

});

}

private void saveText () {

RxView . clicks ( btn )

//                .subscribeOn(Schedulers.io())

//                .observeOn(AndroidSchedulers.mainThread())

. subscribe ( new Subscriber () {

@Override

public void onCompleted () {

result . setText ( SharePreferencesTools . getString ( MainActivity . this , "user" ) + " now " );

}

@Override

public void onError







请到「今天看啥」查看全文


推荐文章
开发者全社区  ·  奇女子!钓男朋友翻车了
17 小时前
开发者全社区  ·  上海某国企裁员10%
3 天前
开发者全社区  ·  中国最难入的IT公司
3 天前
开发者全社区  ·  人大发TT了
3 天前
环球资讯+  ·  (听故事)统治日本百年的五大家族
7 年前
一起神回复  ·  你听到过的最爆笑的梦话是?
7 年前
化工707  ·  今日化工新闻简报 2017-5-3
7 年前