Как я могу обрабатывать двустороннюю привязку в архитектуре MVI?

Я вижу много статей, посвященных двусторонней привязке с помощью MVVM. Но я хочу решить эту проблему, используя единый источник правды. Я не хочу создавать несколько потоков состояний для этого случая. У меня есть StateFlow, у которого есть все состояние просмотра внутри объекта. Как я могу обеспечить синхронизацию с несколькими значениями EditText для StateFlow?

Я добавил несколько TextWatcher для отправки события в ViewModel, но это вызывает такой шаблонный код.

1 ответ

У меня есть ваш вопрос, и я думаю, что вам нужно использовать функцию viewBinding,

поэтому первым шагом вам нужно включить функции viewBinding в вашем gradle (модуле).

      android{
   buildFeatures {
        viewBinding = true //this is mandatory
   }
   ...
}

тогда вы можете связать свое представление, я использую свой код в качестве примера

внутри класса активности вы можете объявить viewBinding своей активности с помощью lateinit и раздуть свою активность внутри onCreate fun

      class HomeActivity : AppCompatActivity() {
    private lateinit var binding: ActivityHomeBinding

    override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       binding = ActivityHomeBinding.inflate(layoutInflater)
       setContentView(binding.root)
       ...
    }
}

и, наконец, вы можете легко получить доступ к своему представлению, используя привязку val

пример

      binding.textView.text = "example" 

приведенный выше код будет похож на

      findViewById<TextView>(R.id.text_view).text ="example"
Другие вопросы по тегам