当前位置:  开发笔记 > Android > 正文

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

如何解决《在文本更改事件之前自动调用RxAndroidtextview事件》经验,为你挑选了1个好方法。

我在编辑文本搜索中使用rxandroid进行去抖操作

我用了

private void setUpText() {
        _mSubscription = RxTextView.textChangeEvents(searchStation)//
                .debounce(500, TimeUnit.MILLISECONDS)// default Scheduler is Computation
                .observeOn(AndroidSchedulers.mainThread())//
                .subscribe(getOps().getdata());
    }

和观察者一样

public Observer getdata()
    {

        return new Observer() {
            @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
            }
        };
    }

我的问题是甚至在任何edittext更改发生之前调用链接.它没有调用textchange事件.我错过了什么我在这里做错了什么.我是rxandroid和rxjava的新手.

我用了

  compile 'io.reactivex:rxandroid:1.1.0'
    compile 'io.reactivex:rxjava:1.1.0'
    compile 'com.jakewharton.rxbinding:rxbinding:0.2.0'

编辑:

它现在可以工作,我在我的逻辑中得到一个空指针获取列表..当我使用onError方法并放置一个堆栈跟踪我发现问题.

如果你想跳过初始调用,那么我们应该将.skip(1)调用 到你的订阅对象.[感谢Daniel Lew ]

上面的代码现在运行得很好



1> Dan Lew..:

RxTextView.textChanges()发出TextView任何更改之前的当前文本值.请参阅文档.

如果您只想去除更改,那么您应该添加skip(1),这将忽略初始发射:

_mSubscription = RxTextView.textChangeEvents(searchStation)
    .skip(1)
    .debounce(500, TimeUnit.MILLISECONDS)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(getOps().getdata());


在rxBinding2(至少)中,您可以使用.skipInitialValue()
带有“ skip(x)”和配置更改的细微差别。假设您在活动onCreate中初始化RxTextView。如果将“跳过”放在“去抖动”之前,并且更改了屏幕方向,则观察者仍会触发。但是,如果在“去抖动”之后放置“跳过”,并且方向发生了变化,那么观察者将按预期跳过初始值。
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有