Tag: rx android

为什么只有最新的订阅者使用Kotlin和RxMVP才能在Android上的RxJava上进行下一个事件

鉴于以下情况: 以CheckBox和多个EditText为特色的View 该View使用杰克·沃顿的RxBinding来访问Observables 对象 fun observeUsername(): InitialValueObservable = RxTextView.textChanges(et_username) 对于EditText (有三个,用户名,密码和电子邮件)和 fun observeSignUpCheckBox(): InitialValueObservable = RxCompoundButton.checkedChanges(cb_sign_up) 为CheckBox Presenter每个EditText都有一个方法,就像 fun observeUsernameText(): Disposable { return view.observeUsernameText() .skipInitialValue() .map { username -> StringUtils.isValidUsername(username.toString()) } .subscribe({ view.setValidUsername(it) }) } 和CheckBox一个方法: fun observeSignUpCheckBox(): Disposable { return view.observeSignUpCheckBox() .subscribe({ checked -> Timber.d(“### view trigger”) }) } 所有这些方法都在Presenter的onCreate中调用,一切按预期工作。 现在的问题: 我在Presenter中添加了一个用于validation用户输入的新函数: fun observeInputFields(): […]

Kotlin:具有可空值的BiFunction无法编译

这(大大简化)代码无法为我编译。 不知道为什么。 返回types是Entry? null对我来说似乎是一个有效的价值。 val foo = BiFunction<Int, List, Entry?> { foo:Int, bar:List -> null } 错误消息是Null can not be a value of a non-null type Entry 谁能告诉我我错过了什么? 我在用: ext.kotlin_version = ‘1.2.10’ compile “io.reactivex.rxjava2:rxjava:2.1.8” compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’ 我欢迎任何建议。 新年快乐!

没有调用Android的LiveData.addSource onChanged事件

我正在使用Android Archi + Retrofit + RxAndroid在Kotlin。 我需要从服务器获取响应时更新我的​​数据对象。 但是livedata.addSource的onChanged没有调用。 我从Git代码获取帮助: – https://github.com/shahbazahmed1269/AndroidGithubIssues 这是我在Kotlin的代码: class LoginRepository : BaseRepository() { fun callLoginApi(data: HashMap): LiveData { val liveData: MutableLiveData = MutableLiveData() // val call = mApiService.getLoginUser(data) mApiService.getLoginUser(data) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { user -> liveData.value = user Log.e(“response”, user.toString()) }, { error -> liveData.value = LoginResponse(error = error.localizedMessage) Log.e(“Error”, error.message) […]

RxJava操作符用于切换方法

即时通讯新的与Android项目上的Rxjava,在这里我的代码 class RadioListRepositoryImpl(private val apiServices: ApiServices, private val chlDao: ChannelDao) : RadioListRepository { private val results: MutableList<DataResponse> init { results = ArrayList<DataResponse>() } override fun getData(): Observable<DataResponse> { return dataFromMemory().switchIfEmpty(dataFromNetwork()) } override fun dataFromMemory(): Observable<DataResponse> { val cacheDateExp = DateTime().minusHours(6) if(chlDao.isCacheExpired(cacheDateExp).isNotEmpty()){ Logger.d("Get data from cache SQLITE") val chList: MutableList<DataResponse> = ArrayList() val cache = chlDao.loadAll() […]

如何将自定义pojo作为参数传递给rxjava2 Observable中的接口方法调用?

当前的代码 Observable.from(listMovie)//list of movie .flatMap(new Func1<Movie, Observable<FavMovieRes>>() { @Override public Observable<FavMovieRes> call(Movie movie) { return moviesAPI.makeMovieFav(userId), sessionId, new MakeMovieFav("movie", movie.getId(), movie.isFavList())); } }) .subscribe(new Subscriber<FavMovieRes>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(FavMovieRes favMovieRes) { } }); 在上面的代码中,我将Movie对象列表传递给Observable,并在结果从API获取结果时对列表中的每个电影实例执行一个操作我想要更改一些有关该电影实例的数据库如何获取OnNext()中的每个Movie实例以及on订阅方法的错误方法。 我想要的是 Observable.from(listMovie) .flatMap(new Func1<Movie, Observable<FavMovieRes>>() { @Override […]

Android RxJava取消旧请求

我是Rxjava的新手,在下面描述的场景中探索可能性并需要帮助。 第1步:滑动视图 第2步:进行API调用以获取数据 以上步骤重复了多次Views。 问题: API_CALL_1获取View_1结果 用户滑动View_2 API_CALL_2获取View_2结果 View_1结果将返回并与View_2结果一起填充到View_2中 我需要在API_CALL_2请求时取消API_CALL_1请求。 谢谢。

RxAndroid – 重试观察点击

我在Android应用程序中使用rxAndroid和rxKotlin来异步处理网络请求。 现在我想重试一个失败的网络请求,只有点击Snackbar按钮后。 我的代码现在: val citiesService = ApiFactory.citiesService citiesService.cities() .subscribeOn(Schedulers.newThread()) // fetch List<String> .flatMap { Observable.from(it) } // convert to sequence of String .flatMap { city -> citiesService.coordinates(city) // fetch DoubleArray .map { City(city, it) } // convert to City(String, DoubleArray) } .toList() .observeOn(AndroidSchedulers.mainThread()) .doOnNext { listView.setOnItemClickListener { adapterView, view, position, id -> onItemClick(it[position]) } } […]

合并Observables列表,并等到所有完成

TL; DR如何将Task.whenAll(List<Task>)转换为RxJava ? 我现有的代码使用Bolts建立一个异步任务列表,并等到所有这些任务完成之后再执行其他步骤。 本质上,它建立一个List<Task>并返回一个单独的Task ,当完成列表中的所有任务完成后,标记为已完成,按照Bolts站点上的示例 。 我期待用RxJava取代Bolts ,我假设这种方法建立一个异步任务列表(大小不是事先知道的),并把它们全部包装成一个单一的Observable是可能的,但我不知道如何。 我试着看着merge , zip , concat等等……但不能在List<Observable> ,我会建立起来,因为他们似乎都只能在两个Observables一次工作,如果我正确理解文档。 我正在努力学习RxJava并且RxJava还是很新的,所以请原谅我,如果这是一个明显的问题或者在文档中解释的话; 我试过搜索。 任何帮助将不胜感激。

RxJava在Android中进行故障测试Presenter

嗨,我想测试一个Android主持人使用mockito,我有很多麻烦。 这是我想测试的代码: public class SignUpPresenter extends BasePresenter { private static final String TAG = SignUpPresenter.class.getSimpleName(); private final AuthRepository mAuthRepository; private final SignUpView mView; public SignUpPresenter(@NonNull SignUpView view, @NonNull AuthRepository authRepository) { this.mAuthRepository = authRepository; this.mView = view; } public void signUp(@NonNull String username, @NonNull String password, @NonNull String email) { mCompositeDisposable.add(mAuthRepository.signUp(username, password, email) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) […]

RxAndroid – 使用RxView.touches清除其他处理程序

我正在尝试将触摸处理程序添加到FabricView ,但似乎这样做我无法再绘制。 事实上,FabricView本身定义了一个Touch处理程序,但似乎我使用RxAndroid2来清除预定义的处理程序,而不是链接到它。 我想要的是能够使用我的处理程序,而不必清除现有的。 这是我主要活动的一部分(sketchview是FabricView的一个实例) sketchView.backgroundMode = FabricView.BACKGROUND_STYLE_NOTEBOOK_PAPER RxView.touches(sketchView, {_ -> true}).subscribe { // setting to false let me sketch, but I don't get any toast event -> when(event.action){ MotionEvent.ACTION_DOWN -> { toast("Starting") } MotionEvent.ACTION_UP -> { toast("Stopping") } else -> {} } } 这是我的app.gradle提取: compile 'com.github.antwankakki:FabricView:latest' compile 'com.rmtheis:tess-two:7.0.0' compile "io.reactivex.rxjava2:rxjava:2.1.0" compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0' […]