RxTextView.textChanges注意事项

问题:当执行subscribe进行订阅时则会执行一次Log.i,尽管myTextView此时为进行任何赋值操作,这显然不是我们想要的当文本发生改变时才进行通知

RxTextView.textChanges(myTextView).subscribe{ charSequence -> Log.i("aa", "*******$charSequence")}

解决:既然没有简单的方法不让它订阅时不通知,我们可以通过标识来控制是否执行我们的业务

var isFirst = true
RxTextView.textChanges(myTextView)
     .subscribe{ charSequence -> 
        if(!isFirst){
            Log.e("aa", "*******$charSequence")
        }else{
           isFirst = false
        }       
     }

备注:

(1)RxTextView.textChanges监听的是onTextChanged

(2)可以通过标志位来控制EditextView,执行setText时不处理通知,输入时才处理

var canPrint = false
RxTextView.textChanges(myEditextView)
     .subscribe{ charSequence -> 
        if(canPrint){
            Log.e("aa", "*******$charSequence")
        }else{
           canPrint = true
        }       
     }

canPrint = false
myEditextView.setText("123456")