在文本更改事件之前自动调用RxAndroid textview事件
我在edittext搜索中使用rxandroid进行去盎司操作 我曾经在文本更改事件之前自动调用RxAndroid textview事件,android,rx-java,rx-android,Android,Rx Java,Rx Android,我在edittext搜索中使用rxandroid进行去盎司操作 我曾经 private void setUpText() { _mSubscription = RxTextView.textChangeEvents(searchStation)// .debounce(500, TimeUnit.MILLISECONDS)// default Scheduler is Computation .observeOn(A
private void setUpText() {
_mSubscription = RxTextView.textChangeEvents(searchStation)//
.debounce(500, TimeUnit.MILLISECONDS)// default Scheduler is Computation
.observeOn(AndroidSchedulers.mainThread())//
.subscribe(getOps().getdata());
}
compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxjava:1.1.0'
compile 'com.jakewharton.rxbinding:rxbinding:0.2.0'
和观察员
public Observer<TextViewTextChangeEvent> getdata()
{
return new Observer<TextViewTextChangeEvent>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(TextViewTextChangeEvent onTextChangeEvent) {
// stationsugession(onTextChangeEvent.text().toString());
//here i called link to get the data from the server
}
};
}
编辑:
它现在可以工作了,我在获取列表的逻辑中得到了一个空指针。。
当我使用OneError方法并放置stacktrace时,我发现了问题
如果您想跳过最初的通话,那么我们应该呼叫。跳过(1)
到您的订阅对象。[感谢Daniel Lew]
上述代码现在工作正常
rxtview.textChanges()
在发出任何更改之前发出TextView
的当前文本值。看
如果只想消除变化的影响,则应添加跳过(1)
,这将忽略初始排放:
_mSubscription = RxTextView.textChangeEvents(searchStation)
.skip(1)
.debounce(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getOps().getdata());
TextViewTextChangeEvent的内容是什么?TextViewTextChangeEvent是com.jakewharton.rxbinding:rxbinding中的一个类,用于获取edittext事件,我想我知道。调用
onTextChangeEvent.text()
并记录结果时会返回什么?它只调用了一次,第一次,我没有收到更改的事件。请将这段信息添加到您的问题中。我还使用了:RxTextView.textChangeEvents(searchStation)。在rxBinding2中筛选{!it.text().isEmpty()}(至少)您可以使用.skipInitialValue()“跳过(x)”和配置更改之间存在细微差别。假设您在activity onCreate中初始化RxTextView。若你们把“跳过”放在“去抖动”之前,屏幕方向改变了,那个么观测者仍然会开火。但若你们把“跳过”放在“去盎司”之后,方向改变了,那个么观察者就会像预期的那个样跳过初始值。@Andrew谢谢你们,+1代表你们!我想知道为什么方向更改仍然调用文本更改事件,即使我使用了.skipInitialValue()。切换顺序后,首先调用debounce(),然后跳过(1),其工作方式与预期的行为类似。我们必须知道.skipInitialValue()不是在debounce()之后调用的。