Android架构组件室ViewModel CompleteableFormAction

时间:2017-09-08 15:43:29

标签: android kotlin rx-java2 android-room

所以我想我会尝试Room一个小方案项目。 我跟随了Florina Muntenescu的示例项目: android-architecture-components

我特别关注课程:UserActivity.ktUserViewModel.ktUserDao.kt

UserViewModel#updateUserName()返回Completable,必须订阅返回onCompleteonError

当我尝试将等效的viewModel.updateUserName(userName)放入RxBindings链时。 如果我订阅通常,我会在Disposable!中将onNext传递给最终"DISPOSED"

,其价值为.subscribe

问题是这不会发出错误,因此永远不会知道是否存在问题

我如何调整下面的代码,以便最终的.subscribe会返回正确的事件?

RxTextView.textChanges(editText)
            .debounce(250L, TimeUnit.MILLISECONDS, schedulers.main)
            .subscribeOn(schedulers.main)
            .observeOn(schedulers.disk)
            .map({ name ->
                viewModel.updateUserName(name)
                        .subscribe(
                                { Timber.d(“Success”) },
                                { error -> Timber.d(error, “something went wrong”)) })                    
            })
            .observeOn(schedulers.main)
            .subscribe(
                    { Timber.d("name changed $it}") },
                    { Timber.e(it, "name error") })

提前致谢

微米。

1 个答案:

答案 0 :(得分:0)

转过来

.map({ name ->
       viewModel.updateUserName(name)
                 .subscribe(
                  { Timber.d(“Success”) },
                 { error -> Timber.d(error, “something went wrong”)) })                    
            })

到此

.flatMapCompletable name ->
           viewModel.updateUserName(name))