У меня есть 1 пользовательский вид, который содержит: TextView -> label; EditText -> input; TextView -> сообщение об ошибке
Я установил желаемый текст в своем тексте редактирования из своего пользовательского представления, используя пользовательский атрибут
Мой адаптер для переплета выглядит так:
@InverseBindingMethods(InverseBindingMethod(type = CustImp::class,attribute = "customtext"))
class BindingAdapters {
companion object {
@JvmStatic
@BindingAdapter("customtext")
fun settextulmeui(editText: CustImp, text: String?) {
text?.let {
if (it != editText.nInput.text.toString()) {
editText.nInput.setText(it)
}
}
}
@JvmStatic
@BindingAdapter(value = ["customtextAttrChanged"], requireAll = false)
fun setListener(editText: CustImp, listener: InverseBindingListener?) {
if (listener != null) {
editText.nInput.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
}
override fun afterTextChanged(editable: Editable) {
listener.onChange()
}
})
}
}
@JvmStatic
@InverseBindingAdapter(attribute = "customtext")
fun gettextulmeui(nMe: CustImp): String {
return nMe.nInput.text.toString()
}
}
}
используя в моем макете, как:
<CustImp
android:id="@+id/mTest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:customtext="@={login.mytext}"
/>
Используя моё наблюдаемое поле "mytext", я могу предварительно заполнить свой текст редактирования из моего пользовательского просмотра. Я могу получить любое новое значение, которое было введено, если я нажму кнопку отправки (получите новое значение, используя мое поле наблюдения в моей модели представления)
Но: если я поверну экран, я потеряю все данные;
Любая помощь / подсказка?
Спасибо