在文本更改事件之前自动调用RxAndroid textview事件

在文本更改事件之前自动调用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

我在edittext搜索中使用rxandroid进行去盎司操作

我曾经

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()之后调用的。