Sto giocando con Android databinding library e sto cercando di usarlo con i layout inclusi.Come ottenere visualizzazioni incluse con Databinding Android?
Il codice che ho è come questo:
activity_main.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/linearLayout">
<include
layout="@layout/view" />
</LinearLayout>
</layout>
view.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/myView">
</View>
MainActivity.java
public MainActivity extends AppCompatActivity{
private ActivityMainBinding mBinding;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
LinearLayout layout = mBinding.linearLayout; // this field is visible
View myView = mBinding.myView // THIS FIELD IS NOT VISIBLE
}
}
Come ho scritto nei commenti v iew myView dichiarato in un layout "incluso" non è visibile. Se sostituisco il codice reale con view.xml, mBinding.myView diventa visibile, la causa sembra essere l'inclusione allora.
Gli stati ufficiali di documentazione unico che
"vincolante non supporta i dati comprendono come un figlio diretto di un elemento di unione." ma nel mio caso View è figlio di LinearLayout, non è un bambino diretto ..
Eventuali suggerimenti?
Come posso fare lo stesso, ma per i due layout con lo stesso nome, questo per layout per custodia per tablet. Voglio dire, quando ho due layout chiamati 'layout/layout.xml' e' layout-sw600dp/layout.xml', ma il secondo ha un contenitore 'FrameLayout' per i frammenti, quest'ultimo non appare nella classe generata vincolante. In anticipo grazie. – epool
Se si dispone di una vista in un layout, ma non entrambi, si dovrebbe vedere la vista nella classe, ma sarà nullo quando un layout è associato. Assicurati di fornire gli ID alle viste che desideri avere come proprietà. –