Uso nella mia nuova app la libreria di associazione dati di Android. Attualmente provo a passare un riferimento di un'altra vista a un metodo.Associazione dati Android - Riferimento per visualizzare
Ho un ImageButton
con un onClickListener
. In questo ascoltatore onClick voglio passare un riferimento della vista root al metodo.
<RelativLayout
android:id="@+id/root_element"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:contentDescription="@string/close_dialog"
android:src="@drawable/ic_close_212121_24dp"
android:background="@android:color/transparent"
android:onClick="@{() -> Helper.doSth(root_element)}"/>
</RelativLayout>
Questo codice sorgente sopra riportato è solo un esempio e non il completo. Ci sono più bambini e anche il pulsante immagine non è figlio diretto dell'elemento radice. Ma penso che il significato sia chiaro.
Ho già provato a passare un riferimento specificando l'id della vista radice (vedere sopra). Ma questo non funziona. Se provo a compilare questo, ottengo l'errore, che il tipo di root_element
non è specificato.
Ho anche provato a importare la classe di associazione generata e accedere all'elemento radice dal campo pubblico in esso. Anche questo metodo non funziona, poiché la classe di associazione deve essere generata per prima.
Quindi esiste un modo per passare un riferimento di una vista a un metodo? So che potrei passare l'id della vista radice con @id/root_element
, ma non lo voglio, dal momento che devo trovare un modo per ottenere un riferimento a questa vista solo con l'ID specificato.
Penso che questa dovrebbe essere la risposta. Molto più semplice e incollato con i documenti di Google. Per le persone che desiderano maggiori informazioni, possono fare riferimento alla risposta di seguito e a Google IO 2016. http://stackoverflow.com/questions/37727600/cannot-refer-to-other-view-id-in-android-data-binding https://www.youtube.com/watch?v=DAmMN7m3wLU&feature=youtu.be&t=13m59s – OnJohn
Questa risposta è corretta. ogni volta che si utilizza l'associazione dati per passare gli elementi della vista. Di solito è camel-cased. –