Я хотел бы включить поле EditText в зависимости от того, проверяется ли CheckBox или нет:
Приложение работает, как и ожидалось, пока я не начну использовать LiveData для включения / выключения флажка (отключение флажка больше не приводит к значению EditText enabled = false). Флажок результата снят, поле EditText по-прежнему включено:
Код модели представления:
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" />
Пожалуйста, помогите мне найти правильное решение для этой проблемы.