RxBinding基本使用
来源:互联网 发布:淘宝店铺如何进货 编辑:程序博客网 时间:2024/06/04 00:22
1、RxBinding需要导入依赖:
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
2、一些基本的写法在下面:
RxTextView:/** * textChangeEvents: * 在你操作之后, * event.count()返回的是刚刚输入了多少了,如果是删除了字节返回0 * event.start()返回的是在你刚刚输入之前,tv(et)的length,如果你是删除了字节就返回还剩多少个 * event.toString()返回的是一个TextViewTextChangeEvent{text=然后放, start=0, before=0, count=3, view=android.widget.EditText{9e05f0d VFED..CL. .F...... 0,144-1080,744 #7f0b0061 app:id/et1}} * event.text()返回的是目前tv(et).getText.toString * event.before()如果你刚刚执行的是输入就返回0,执行的是删除就返回1 */ RxTextView.textChangeEvents(((EditText) findViewById(R.id.et1))) .debounce(500, TimeUnit.MILLISECONDS) .subscribe(event -> Log.i(TAG, event.before() + "")); /** * afterTextChangeEvents: * event.editable()返回的是tv(et).getText.toString * event.toString() TextViewAfterTextChangeEvent{editable=放假就, view=android.widget * .EditText{28c9ec2 VFED..CL. .F...... 0,144-1080,744 #7f0b0061 app:id/et1}} * event.equals("你好") 不知道为啥我输入的是"你好"也返回的是false */ RxTextView.afterTextChangeEvents(((EditText) findViewById(R.id.et1))) .debounce(500, TimeUnit.MILLISECONDS) .subscribe(event -> Log.i(TAG, event.equals("你好") + ""));/** * beforeTextChangeEvents: * event.after()返回的是你刚刚输入了多少个 * event.toString()还是一样 * event.text()返回的是你目前tv(et).getText.toString() * event.start()返回的是你刚刚输入之前tv(et).length() *event.count()你刚刚是输入返回0,是删除返回1 */ RxTextView.beforeTextChangeEvents(((EditText) findViewById(R.id.et1))) .debounce(500, TimeUnit.MILLISECONDS) .subscribe(event -> Log.i(TAG, event.count() + "")); /** * beforeTextChangeEvents: * event.after()返回的是你刚刚输入了多少个 * event.toString()还是一样 * event.text()返回的是你目前tv(et).getText.toString() * event.start()返回的是你刚刚输入之前tv(et).length() *event.count()你刚刚是输入返回0,是删除返回1 */ RxTextView.beforeTextChangeEvents(((EditText) findViewById(R.id.et1))) .debounce(500, TimeUnit.MILLISECONDS) .take(10) .subscribe(event -> Log.i(TAG, event.after() + event.start() + "")); RxAbsListView.scrollEvents(mListView) .subscribe(new Action1<AbsListViewScrollEvent>() { @Override public void call(AbsListViewScrollEvent event) { Log.i(TAG, event.firstVisibleItem() + "--firstVisiblePosition"); Log.i(TAG, event.visibleItemCount() + "--visibleCount"); Log.i(TAG, event.totalItemCount() + "--total"); //0代表空闲SCROLL_STATE_IDLE //1代表正在触摸滑动SCROLL_STATE_TOUCH_SCROLL //2代表滚动状态SCROLL_STATE_FLING Log.i(TAG, event.scrollState() + "--state"); } }); RxAdapterView.itemClicks(mListView) .subscribe(integer -> Log.i(TAG, integer + "")); RxAdapterView.itemClickEvents(mListView) .subscribe(new Action1<AdapterViewItemClickEvent>() { @Override public void call(AdapterViewItemClickEvent event) { //返回的是position Log.i(TAG, event.position() + ""); } }); RxAdapterView.itemLongClicks(mListView) .subscribe(position -> Log.i(TAG, position + "")); RxRadioGroup.checkedChanges(((RadioGroup) findViewById(R.id.rg))) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { //一个都没选输出的是-1 //从integer为1开始算// RxCompoundButton.checkedChanges()跟这个是类似的 Log.i(TAG, integer + ""); } });
RxRadioGroup示例“:
RxRadioGroup.checkedChanges(mRadioGroup) .subscribe(position -> setRadioGroup(position)); ((RadioButton) mRadioGroup.getChildAt(0)).setChecked(true); private void setRadioGroup(int position) { if (position == -1) return; FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); Fragment fragment = fragmentList.get(position-1); if (fragment.isAdded()) { transaction.show(fragment); } else { transaction.add(R.id.main_fl, fragment); visiableFragments.add(fragment); } for (Fragment fragment1 : visiableFragments) { if (fragment1 != fragment) { if (fragment1.isVisible()) { transaction.hide(fragment1); transaction.addToBackStack(null); } } } transaction.commit(); }
注意:如果用上面这种方法来使用radiogroup,那么radiogroup里面的radiobutton不要设置id,不然传递出来的position就不是从1开始然后输出位子,而是输出的resId,例如276545145,会一直蹦显示角标越界。
阅读全文
0 0
- RxBinding基本使用
- RxBinding使用
- RxBinding的使用
- 一些RxBinding使用场景
- 004.RxBinding的使用
- Rxbinding的使用
- RxBinding的一些简单使用
- RxJava+RxBinding 一些使用技巧
- 使用RxBinding处理控件异步调用
- 使用RxBinding处理控件异步调用
- 使用RxBinding响应控件的异步事件
- 使用RxBinding响应控件的异步事件
- 使用RxBinding响应控件的异步事件
- 关于RXbinding的一些常规使用
- 关于Android—>rxbinding的简单使用
- RxBinding的使用,实现数据和View的绑定
- RxJava 和 RxAndroid 四(RxBinding的使用)
- RxJava 和 RxAndroid 四(RxBinding的使用)
- Android项目集成ReactNativeMac版
- mysql 用drop和delete方法删除用户的区别
- 【转】三维点云数据集
- HDU-1176-免费馅饼【二维dp】
- maven打包项目
- RxBinding基本使用
- Java 调 C 中遇到的字符串转换
- Java Thread.yield是个巨大的坑
- Java高并发,如何解决,什么方式解决
- ambari系列--报错问题2
- python元组与列表
- myeclipse安装maven
- Mac开发常用技巧
- Android总结的网站