美文网首页
databinding 事件监听

databinding 事件监听

作者: 忧郁的老王 | 来源:发表于2019-08-12 14:25 被阅读0次

    databinding 有几种事件监听方式,添加方法监听和lambda 方法调用

    lambda 方法调用

     <data>
    
            <variable
                name="viewModel"
                type="com.tcsc.app.operationalplatform.view.activity.wallet.cashapply.BankCardViewModel" />
            <variable
                name="handlers"
                type="com.tcsc.app.operationalplatform.view.activity.wallet.cashapply.ApplyCashActivity.CardListener" />
        </data>
    

    在xml 中引入一个外部定义的监听器,监听器可以来自任何地方例如以上代码中 handlers 就是我们引入的一个监听器。
    监听器的调用:

      <android.support.constraint.ConstraintLayout
            android:onClick="@{( )->handlers.onChoiceCard(viewModel.number,viewModel.name,viewModel.bankLogo)}"
            android:id="@+id/constraintLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="15dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="15dp"
            android:layout_marginEnd="15dp"
            android:layout_marginRight="15dp"
            android:background="@drawable/shape_corners_5_white">
    

    直接调用方法

    <EditText
        android:afterTextChanged="@{callbacks::nameChanged}" .../>
    
    public class Callbacks {
        public void nameChanged(Editable editable) {
            //...
        }
    }
    

    直接调用监听器

    定义个一个外部监听器,然后直接引用他,但是这种监听器引用的方式只适用于可以调用set方式添加的监听器

    <View android:onClick="@{listeners.clickListener}" .../>
    

    三种方式的区别

    引用方式 是否需要签名保持一致 是否需要需要参数字段一致 返回值处理
    监听器引用 是,只能使用可以set的监听器 是,只能使用可以set的监听器 按原监听器处理
    方法调用 按原监听器处理,如果返回值不匹配将不被调用
    lamda方法调用 可以不用返回值将自动填入默认返回值

    相关文章

      网友评论

          本文标题:databinding 事件监听

          本文链接:https://www.haomeiwen.com/subject/rceadctx.html