Android 如何在observableField中变异传入字符串

Android 如何在observableField中变异传入字符串,android,kotlin,rx-java,Android,Kotlin,Rx Java,我将以下字段绑定到editText val lastName = ObservableField(MutableLiveData<String>()) 我想我可以这样做来解决这个问题 lastName.getObservable() .subscribe { input -> val lastname = input.decapitalize() lastName.getField().postValue

我将以下字段绑定到editText

val lastName = ObservableField(MutableLiveData<String>())
我想我可以这样做来解决这个问题

    lastName.getObservable()
        .subscribe { input ->
            val lastname = input.decapitalize()
            lastName.getField().postValue(lastname.capitalize())
        }

我注意到这样做会让我陷入一个永恒的循环,因为每次postvalue都会触发订阅。如何通过RxJava对传入字符串进行变异,而不必像现在这样做?

您可以通过覆盖
set
在源代码处执行此操作。我看不出多层可观察性的原因,所以我把它放在这里

val lastName = object: ObservableField<String>() {
        override fun set(value: String) {
            super.set(value.capitalize())
        }
    }
但这种多层结构在我看来很复杂。如果可以覆盖LiveData实例,我看不出您如何能够可靠地订阅底层数据

val lastName = object: ObservableField<String>() {
        override fun set(value: String) {
            super.set(value.capitalize())
        }
    }
val lastName = ObservableField(object: MutableLiveData<String>() {
        override fun setValue(value: String) {
            super.setValue(value.capitalize())
        }
    })