问题:当执行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")