RxBinding基本使用

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值