首页 > 解决方案 > 如何将 onClickListener 传递给标签?

问题描述

要包含的布局是这样的child.xml

 <layout>
       <data>
          <variable
              name="click"
              type="">   <!-- What type should be here? -->
       </data>    

       <LinearLayout>
           <View onClick="@{click}"/>
       </LinearLayout>
    </layout>

要包括这个,parent.xml:

<layout>
    <data>
       <variable
           name="viewModel"
           type="ViewModel"/>
    </data>
    <LinearLayout>
         <View onClick="()->viewModel.click1()"/>
         <include 
             bind:click="()->viewModel.click2()"/>
             layout="@layout/child"/>
    </LinearLayout>
</layout>

那么如何才能将 clickEvent 仅传递给 child.xml。由于不同的 parent.xml 有不同的 ViewModel,我认为我不应该将 viewModel 传递给 child.xml。但我不知道如何将方法传递给 child.xml。

我现在正在做的解决方案是 Java File 中的 setOnClickListener。我怀疑 dataBinding 是否可以使它更容易。

标签: androidandroid-databinding

解决方案


child.xml

<variable
    name="click"
    type="android.view.View.OnClickListener"/>


<View onClick="@{click}"/>

parent.xml

<include
    layout="@layout/row"
    app:click="@{()-> viewModel.click2()}"
    />

有很多方法可以在include标签中传递变量,请阅读@我的答案


推荐阅读