Включение просмотра не работает при использовании двусторонней привязки данных и Livedata - PullRequest
2 голосов
/ 17 марта 2020

Я хотел бы включить поле EditText в зависимости от того, проверяется ли CheckBox или нет:

enter image description here enter image description here

Приложение работает, как и ожидалось, пока я не начну использовать LiveData для включения / выключения флажка (отключение флажка больше не приводит к значению EditText enabled = false). Флажок результата снят, поле EditText по-прежнему включено:

enter image description here

Код модели представления:

class FirestoreViewModel : ViewModel() {

var firebaseRepository = FirestoreRepository()

val userItem = firebaseRepository.getUserItem() as MutableLiveData<UserItem>}

Код действия (привязка макета) и модель представления):

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    //to show problem: binding = FragmentLivedataBinding.inflate(layoutInflater)
    val binding = FragmentNoLivedataBinding.inflate(layoutInflater)

    binding.lifecycleOwner = this

    val model: FirestoreViewModel by viewModels()

    binding.viewmodel = model

    setContentView(binding.root)
}

Файл макета. xml Файл, использующий LiveData для установки CheckBox (FragmentLivedata):

<CheckBox
                android:id="@+id/checkBox1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:checked="@={viewmodel.userItem.player1Active}"/>

            <EditText
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:importantForAutofill="no"
                android:inputType="textPersonName"
                android:text="@={viewmodel.userItem.player1Name}"
                android:enabled="@{viewmodel.userItem.player1Active}"
                tools:text="User Name" />

Без LiveData (FragmentNoLivedata):

<CheckBox
                android:id="@+id/checkBox1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:checked="true"/>

            <EditText
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:importantForAutofill="no"
                android:inputType="textPersonName"
                android:text="@={viewmodel.userItem.player1Name}"
                android:enabled="@{checkBox1.checked}"
                tools:text="User Name" />

Пожалуйста, помогите мне найти правильное решение для этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...