Я создаю приложение, и я сделал страницу типа контакта с парой вводимого текста и кнопкой для отправки сообщения. Теперь я хотел сделать кнопку доступной только при соблюдении некоторых критериев, в которых три наиболее важных поля заполнены некоторыми данными (служба, объект и сообщение).
С шаблоном MVVM и двусторонней привязкой данных , он работает нормально, но когда я наблюдаю за данными в фрагменте, с которым связано представление, у меня появляется уродливый код, который выглядит следующим образом:
contactPageViewModel.serviceToContact.observe(viewLifecycleOwner, Observer { service ->
contactPageViewModel.objectContact.observe(viewLifecycleOwner, Observer { objectContact ->
contactPageViewModel.message.observe(viewLifecycleOwner, Observer { message ->
contact_send_btn.isEnabled = !service.isNullOrEmpty() && !objectContact.isNullOrEmpty() && !message.isNullOrEmpty()
})
})
})
По сути, он проверяет, поля заполнены данными, и если это так, он активирует кнопку, которая работает хорошо.
Но моя проблема заключается в следующем: это вложенный наблюдатель, даже два раза. Итак, можно ли сделать его более чистым, не имея вложенного наблюдателя для проверки выполнения условий?
Спасибо.