Articles of rx android

EditText有文本时启用button(RxAndroid)

RxJava / RxAndroid新手,我发现缺乏令人不安的例子。 作为一种使用Rx的方法,id喜欢尝试一些小工作。 基本上,如果一个EditText文本input到它,然后启用它下面的Button 。 我遇到了这个答案,但作者编辑并没有真正展示如何完全实现这样的东西。 从我所搜集的内容中,我可以使用RxBindings创build一个Observable如: Observable<CharSequence> observable = RxTextView.textChanges(mEditText); 据说我现在需要.subcribe()一个Observer来观察observable Observer到的变化,但我不确定这将如何完成。 另外,如果不使用RxBindings,如何创buildEditTexts Observable? 编辑:尽pipeRetrolambda存在,显示如何实现这个没有lambda(或两者)的答案将是有帮助的。

RxJava flatMapIterable与单

我试图整理一下我的代码, Single对于我来说是一个不错的select,因为我正在做一些只会发出一个结果的东西。 我有一个问题,因为我以前使用flatMapIterable采取我的回应(一个列表),并在每个项目上做一些事情。 我没有看到我怎么能用Single实现这个。 getListOfItems() .flatMapIterable(items -> items) .flatMap(item -> doSomethingWithItem()) .toList() 这工作得很好,如果getListOfItems返回一个Observable但如果我试着让它返回一个Single ,那么我不能做flatMapIterable ,不能看到替代,任何想法?

如何通过RxAndroid和Retrofit 2检索响应体?

我正在使用Retrofit 2(testing版4),我正在寻求从使用标准的Call响应到RxAndroid Observable响应。 我通过从Call<List<ExampleObject>>到Observable<List<ExampleObject>>的简单交换成功地切换了我的大部分调用。 我的一些电话使用Call<okhttp3.ResponseBody> ,这很好,但是当我换出Call ,遇到了一个错误: 03-03 15:21:44.237 27333-27333/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app, PID: 27333 java.lang.IllegalArgumentException: Unable to create call adapter for rx.Observable<okhttp3.ResponseBody> for method AuthenticationService.getLoginForm at retrofit2.Utils.methodError(Utils.java:119) at retrofit2.MethodHandler.createCallAdapter(MethodHandler.java:52) at retrofit2.MethodHandler.create(MethodHandler.java:25) at retrofit2.Retrofit.loadMethodHandler(Retrofit.java:164) at retrofit2.Retrofit$1.invoke(Retrofit.java:145) at java.lang.reflect.Proxy.invoke(Proxy.java:393) at $Proxy6.getLoginForm(Unknown Source) at com.example.app.ui.fragment.LoginFragment.login(LoginFragment.java:214) at com.example.app.ui.fragment.LoginFragment.lambda$onContinue$1(LoginFragment.java:168) at com.example.app.ui.fragment.LoginFragment.access$lambda$1(LoginFragment.java) at com.example.app.ui.fragment.LoginFragment$$Lambda$4.onClick(Unknown Source) at android.view.View.performClick(View.java:5204) […]

Android比较器类的rxjavasorting列表

我开始用我的android项目使用rxjava。 我需要从api调用中sorting返回事件列表。 我写了比较类来sorting列表: public class EventParticipantComparator { public static class StatusComparator implements Comparator<EventParticipant> { @Override public int compare(EventParticipant participant1, EventParticipant participant2) { return participant1.getStatus() – participant2.getStatus(); } } } 我可以使用这个类与经典的集合类。 Collections.sort(participants, new EventParticipantComparator.StatusComparator()); 我怎样才能以反应的方式来实现这种情况? 如果有任何方法asynchronoussorting列表,我会更喜欢这种方式。 没有sorting列表的反应方式: dataManager.getEventImplementer().getParticipants(event.getId()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<EventParticipant>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } […]

链接RxJava观察与callback/听众

我正在使用Observable进行Retrofit,并希望链接观察者。 通常它可以和map()或flatMap()这样的函数很好地flatMap() ,因为api返回一个可执行任务的Observable。 但在这种情况下,我必须做到以下几点: getKey()从api 使用另一个库Foo的返回键并等待callback被调用。 当callback函数返回时,将结果发送给api 。 我想这是一个单一的链接电话,所以我只需要订阅一次。 我猜我可以使用merge()或join()或其他东西,但不知道最好的办法是处理callback。 有没有办法让这个更好? 这是我迄今为止: api.getKey().subscribe(new Action1<String>() { @Override public void call(String key) { Foo foo = new Foo(); foo.setAwesomeCallback(new AwesomeCallback() { @Override public void onAwesomeReady(String awesome) { api.sendAwesome(awesome) .subscribe(new Action1<Void>() { @Override public void call(Void aVoid) { handleAwesomeSent(); } }); } }); foo.makeAwesome(); } });

Proguard和RxAndroid V1.1.0

我似乎无法得到Proguard使用RxAndroid v1.1.0库。 以前,我一直在使用v1.0.1,这与以下规则正常工作。 -dontwarn rx.internal.util.unsafe.** 然而,升级到rxAndroid的v1.1.0后,还包括RxJava,就像它在Github的ReadMe.txt中所说的那样,当我在代码中使用RxAndroid的时候,我得到了这个exception。 Caused by: java.lang.NoSuchFieldException: producerIndex 因此,我添加了更多的Proguard规则,就像人们在Github的一些问题报告中所说的那样。 -keep class rx.schedulers.Schedulers { public static <methods>; } -keep class rx.schedulers.ImmediateScheduler { public <methods>; } -keep class rx.schedulers.TestScheduler { public <methods>; } -keep class rx.schedulers.Schedulers { public static ** test(); } -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { […]

如何在Android中创build一个Observable?

我想要做的是创build一个简单的内存caching,只是为了试用Observables。 但是我被卡住,因为我不明白如何创build一个可观察的。 这是我到目前为止的代码: public class MovieCache { MovieWrapper movieWrapper; public Observable<MovieWrapper> getMovies() { //How to create and return an Observable<MovieWrapper> here? } public void setCache(MovieWrapper wrapper) { movieWrapper = wrapper; } public void clearCache() { movieWrapper = null; } } 在getMovies()方法中,我想创build一个Observable并将我的本地字段movieWrapper返回给订阅者。 我怎样才能做到这一点? 我尝试使用new Observable.just(movieWrapper)但它导致一个空的exception。

如何处理使用RxJava的回收站视图的项目点击

我有兴趣了解什么是响应回收商视图的项目点击的最佳方式。 通常我会添加一个onclick()监听器到ViewHolder,并通过一个接口将结果传递给activity / fragment。 我想在onBindViewHolder中添加一个Observable,但是我不想为每个项目绑定创build一个新的Observable。

改造默认线程

我在我的Android应用程序中使用RxJava进行Retrofit ,我的代码是: public void getConfig(NetworkSubscriber subscriber) { Observable<Config> observable = mApi.getConfig(); observable.subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); } public void getCode(String mobile, int type, NetworkSubscriber subscriber) { Observable<BaseMessageEntity> observable = mApi.getCode(mobile, type); observable.subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); } 我不想写每个业务方法.subscribeOn(Schedulers.newThread())和.observeOn(AndroidSchedulers.mainThread()) 我能怎么做?

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

我使用rxandroid进行了edittextsearch的去抖操作 我用了 private void setUpText() { _mSubscription = RxTextView.textChangeEvents(searchStation)// .debounce(500, TimeUnit.MILLISECONDS)// default Scheduler is Computation .observeOn(AndroidSchedulers.mainThread())// .subscribe(getOps().getdata()); } 和观察员一样 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 […]