DataBinding学习(二)

1 绑定事件

上代码:
事件处理MyHandlers类:

package com.example.ethan.bindingmethod;

public class MyHandlers {
    public void onClickFriend(View view) {
        Toast.makeText(view.getContext(), "Friend", Toast.LENGTH_SHORT).show();
    }

    public void onClickEnemy(View view) {
        Toast.makeText(view.getContext(), "Friend", Toast.LENGTH_SHORT).show();
    }
}

XML文件:

<data>
    <import type="com.example.ethan.bindingmethod.MyHandlers"/>
    <variable
        name="handler"
        type="MyHandlers"/>
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:background="#0ff"
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:layout_weight="1"
        android:onClick="@{handler.onClickFriend}"//没有带()
        android:text="Friend"/>

    <TextView
        android:background="#ff0"
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:layout_weight="1"
        android:onClick="@{handler.onClickEnemy}"
        android:text="Enemy"/>
</LinearLayout>

MainActivity中的代码:

 ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

 binding.setHandler(new MyHandlers());

从上面可以看出,在调用事件处理方法的时候只需要用”实例对象.方法名”,不带括号!同样的后面的绑定方法也是如此。
另外需要补充的是,不同的点击事件有不同处理。如下所示:


2 绑定方法

1 静态方法

工具类代码:

package util;

public class StringUtil {
    public static String toUppercase(String oriStr) {
        return oriStr.toUpperCase();
    }
}

XML文件:

 <import type="util.StringUtil"/>   
...
<TextView
     android:layout_width="0dp"
     android:layout_height="60dp"
     android:layout_weight="1"
     android:background="#0ff"
     android:onClick="@{handler.onClickFriend}"
     android:text="@{StringUtil.toUppercase(user.name)}"/>

可以看出,绑定静态的方法只需要进行导包,随后直接用类名调用方法,带括号!带参数!(可以试试把user.name替换为abcd或者”abcd”,有惊喜~)

2 一般方法


可以参考上面“绑定事件”中事件处理的调用。简言之,实例对象+方法名,不带括号!

3 小结

  1. 绑定事件需要根据不同的事件进行不同的绑定;
  2. 绑定方法其实和往常基本一致,唯一的区别就是用实例调用一般方法时不需要带括号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值