Могу ли я разделить макет xml между двумя действиями (Использование привязки данных с шаблоном MVVM) - PullRequest
0 голосов
/ 05 апреля 2020

Предположим, у меня есть активность A с activity_a. xml. и я устанавливаю переменную привязки моего ViewModel VMA . У меня есть другой вид деятельности B, и теперь я хочу использовать тот же activity_a. xml, но с другой ViewModel VMB . Теперь проблема в том, что я могу использовать одно и то же имя переменной «ViewModel» для обеих моделей представления (VMA и VMB). И если я использую другое имя переменной, то как я буду использовать их в одном и том же свойстве представления, например: android:text = "@{viewModel.text}"

Давайте посмотрим только на случай TextView, может быть несколько других случаев, когда мне понадобится ViewModel в XML

activity_a. xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <variable
            name="viewModel"
            type="com.example.VMA" />


       <!--
            <variable
            name="viewModel" I can't use same variable name as ViewModel
            type="com.example.VMB" /> -->
    </data>

    <TextView>
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@{viewModel.text}"
    </TextView>

</layout>

Теперь я хочу использовать одну и ту же компоновку с другим VMB типа ViewModel в XML для действия B.

1 Ответ

0 голосов
/ 05 апреля 2020

У вас странный лог c в вашей программе. Я не могу понять, почему вам нужно использовать разные ViewModels с одним макетом ?. Если вы используете тот же макет, предполагается, что ваша структура модели представления такая же, поэтому вы можете просто изменить данные в ViewModelA и использовать его с ActivityB .

...