2017-07-25 1 views
1

etwa wie folgt:Können wir Root-Ansicht in einem XML-Layout in Databinding abrufen?

android:onClick="@{() -> presenter.onClick(rootView)}"

Quellcode:

<?xml version="1.0" encoding="utf-8"?> 
<layout> 

    <data> 
     <variable 
      name="presenter" 
      type="Presenter" /> 
    </data> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="@{() -> presenter.onClick(rootView)}" 
      android:text="abcde" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="tytyt" /> 
    </LinearLayout> 
</layout> 
+0

Was Sie von 'rootView' bedeuten sie? Sie können das Ansichtsobjekt des Layouts mit 'binding.getRoot()' aufrufen. Lass es mich wissen, wenn du nicht danach suchst. –

+0

Ich möchte es von xml, nicht von Code – Sam

Antwort

1

Ja können Sie perticular Blick durch seine ID

android:onClick="@{() -> presenter.onClick(viewId)}" 

In Ihrem Fall erhalten Sie

tun können
<LinearLayout android:id="@+id/parentView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="@{() -> presenter.onClick(parentView)}" 
     android:text="abcde" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="tytyt" /> 
</LinearLayout> 

und Ihre onClick wird

public void onClick(View view) or public void onClick(LinearLayout layout) 
{ 

} 
+0

Ich erinnere mich, dies vor einiger Zeit versucht und es hat nicht funktioniert, aber es scheint jetzt zu arbeiten, so sollte Ihre Antwort als akzeptiert und verwendet werden, wie es näher an dem ist Gewinde Starter ursprünglich gewünscht.Sorry für irreführende. – Dokuzov

+0

Das ist in Ordnung :) Da gibt es immer mehrere Ansätze, um das Ziel zu erreichen. –

+1

In der Tat, aber Ihre ist klarer als die Logik für die Bereitstellung der Root wird nicht notwendig sein. Es ist der Weg nach vorne! Prost – Dokuzov

Verwandte Themen