Итак, есть некоторая хитрость, если вы хотите, чтобы привязка данных работала, когда вы используете include
в своих макетах, поэтому сделайте следующее:
Шаг 1 : измените свой XMLфайл, в котором вы используете тег include
для чего-то вроде этого.Посмотрите внимательно, как я играю с именами переменных в этой привязке данных.
<data>
<import type="com.example.jenny.MyViewModel"/>
<variable
name="viewModelNew"
type="MyViewModel"/>
<include
layout="@layout/my_include_layout
app:viewModel="@{viewModelNew}"/> <!--this, viewModel is the variable declared in xml which you are including here-->
</data>
Шаг 2 : И в макете, который вы включаете, т.е. в my_include_layout
, выполните RealПривязка данных там выглядит следующим образом:
<data>
<import type="com.example.jenny.MyViewModel"/>
<variable
name="viewModel"
type="MyViewModel"/>
</data>
<View
app:visibilityCondition="@{viewModel.showingItems}"/><!--the real Data Binding is happening here-->
Шаг 3 : Кроме того, в своей деятельности или фрагменте, где бы вы ни инициализировали привязку данных, напишите
dataBinding.viewModelNew = new MyViewModel() // or something like this, you have to initialze the data binding variable
Дайте мне знать, если это поможет.