Exemplo Completo Fácil
Basta definir o id
layout incluído e usar binding.includedLayout.anyView
.
Este exemplo ajuda a passar um valor para <include
e acessar as visualizações incluídas no código.
Passo 1
Você tem layout_common.xml
, deseja passar String
para o layout incluído.
Você criará uma String
variável no layout e se referirá String
a ela TextView
.
<data>
// declare fields
<variable
name="passedText"
type="String"/>
</data>
<TextView
android:id="@+id/textView"
...
android:text="@{passedText}"/> //set field to your view.
Passo 2
Inclua este layout no layout pai. Forneça um id
layout incluído, para que possamos usá-lo na classe de ligação. Agora você pode passar String passedText
para sua <include
tag.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
..
>
<include
android:id="@+id/includedLayout"
layout="@layout/layout_common"
app:passedText="@{@string/app_name}" // here we pass any String
/>
</LinearLayout>
</layout>
- Você pode usar agora
binding.includedLayout.textView
em sua classe.
Você pode passar qualquer variável para o layout incluído como acima.
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.includedLayout.textView.setText("text");
Nota Ambos os layouts (pai e incluídos) devem ser binding layout
embalados com<layout
<include layout="@layout/buttons" android:id="@+id/buttons"/>
. Você ainda precisa do id para que ele produza um campo público para você para que possa acessar a Visualização de botões.