何时使用BindingAdapter以及何时使用MVVM中的liveData或observable字段?

时间:2019-01-07 11:04:02

标签: java android design-patterns mvvm android-architecture-components

我对使用这些模式的最佳方法感到困惑,例如,验证EditText文本的最佳位置在哪里?在活动中还是在ViewModel中使用observable字段还是使用bindingAdapter中?

1 个答案:

答案 0 :(得分:1)

如果您要谈论验证文本输入是正确还是不正确,那么这是逻辑,应该在ViewModel中处理。不正确,会发生某些事情(例如红色下划线或绿色复选标记或其他)。

BindingAdapter 应该仅用于将某些东西转换成其他东西。 例如:布尔变量->字符串TRUE或FALSE。

用于文本输入的ViewModel Logic示例:

val textInput = BehaviorSubject.create<String>()
val inputCorrect: LiveData<Boolean>

textInput
    .switchMap { input -> textCorrect(input) }
    .subscribe( inputCorrect.postValue(it) )