事件处理
各类view的事件绑定(TextView ImageView CheckBox EditText ListView CustomView)
TextView 点击事件绑定
//view 层
<data>
<variable
name="acitivity"
type="com.xwjr.wwxh_login.activity.LoginActivity" /> //导入相关变量,即view的事件触发的那个类
</data>
<TextView
android:id="@+id/login"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="10dp"
android:background="#dfd"
android:gravity="center"
android:text="登录"
android:onClick="@{acitivity::login}" //此处绑定对应的函数名(login)
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
//java类
activityMainBinding.acitivity = this //绑定数据,我这里直接用的当前activity所有用this代替
fun login(view: View) {
}
ImageView
开始踩坑
//先来个java类吧 这个类随便放,不用在哪里调用 @BindingAdapter 注解写好就行
public class ImageViewAttrAdapter {
//绑定的方法就像传入的参数一样,默认会有一个imageView,该方法传入了3个参数,如果要调用这个,xml也需要有3个属性
@BindingAdapter({"app:imageUrl", "app:placeHolder", "app:error"})
public static void loadImage(ImageView imageView, String url, Drawable holderDrawable, Drawable errorDrawable) {
Glide.with(imageView.getContext())
.load(url)
.placeholder(holderDrawable)
.error(errorDrawable)
.into(imageView);
}
@BindingAdapter({"app:imageUrl"})
public static void loadImage(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(url)
.into(imageView);
}
}
//look look xml 文件 会有上面注解传入的3个属性值,这个要跟上面的java 匹配
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/colorAccent"
app:imageUrl="@{`http://ww1.sinaimg.cn/large/7a8aed7bjw1f2zwrqkmwoj20f00lg0v7.jpg`}"
app:placeHolder="@{@drawable/login_wx_icon}"
app:error="@{@drawable/login_wx_icon}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
//so 这样就可以显示图片了
//友情提示:暂不支持 mipmap的资源,会报错
1
1
1
11
1
1
1
1