美文网首页
DataBinding 笔记

DataBinding 笔记

作者: 帅气Name | 来源:发表于2017-04-14 11:55 被阅读32次

参考:
Data Binding Library
Data Binding指南

上面两篇博客写的非常详细了,这里我只是记录自己的问题。

自定义Setter:

用这个绑定ImageView感觉特别棒。

// 自定义加载图片到ImageView
@BindingAdapter({"url","error"})
public static void loadImage(ImageView view, String url, Drawable error){
    Glide.with(view.getContext()).load(url).into(view);
}

注意点:这里error传入的是Drawable对象

<!-- 布局文件 -->
<ImageView 
  app:url=“@{model.imageUrl}”
  app:error=“@{@drawable/error}”/>

如上类似加载图片的方法,其他常用的方法也可以自定义出来,方便使用。

有时候事件绑定不方便,会利用自定义的方式实现:

@BindingAdapter({"navigationOnClick"})
public static void setNavigationOnClick(Toolbar toolbar, View.OnClickListener clickListener){
    toolbar.setNavigationOnClickListener(clickListener);
}
//ViewModel中的方法
public View.OnClickListener getOnClick() {
    return new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              ...
        }
    };
}

<!-- 布局文件 -->
<android.support.v7.widget.Toolbar 
  app:navigationOnClick="@{model.onClick}"/>

遇见的Bug:

当在Activity中创建的Binding,所获取的控件id为null

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
   
   //R.layout.main_activity内有TextView,且设置了id="text_view"
   binding.textView
}

不知道为何,这里的binding.textView 为null,找不到这个控件。

其他,在 fragment或者 adapter 中使用 binding不会出现这个问题。


表达式语音:

这里记录几个常用的表达式语言

  • 数学计算 + - / * %
  • 字符串连接 +
  • 类型转换
  • 三元运算符 ?:
  • 逻辑 && ||
  • Null合并运算符
// int类型转换成String类型,可以直接调用String
// int类型可以进行数学计算
android:text="@{String.valueOf(index + 1)}"
// 三元运算符 ?:
// 这里可以直接调用View
android:visibility="@{age < 13 ? View.GONE : View.VISIBLE}"
// 字符串相加
android:transitionName='@{"image_" + id}'
//Null合并运算符(??)会在非 null 的时候选择左边的操作,反之选择右边。
android:text="@{user.displayName ?? user.lastName}"

相关文章

  • JetPack学习笔记之DataBinding(二)

    JetPack学习笔记之DataBinding(二) 上一篇文章中介绍了DataBinding的基本使用方法,通过...

  • DataBinding笔记

    DataBinding主要解决了两个问题: 需要多次使用findViewById,损害了应用性能且令人厌烦 更新U...

  • DataBinding 笔记

    什么是DataBinding DataBinding,2015年IO大会介绍的一个框架,字面理解即为数据绑定,是G...

  • DataBinding 笔记

    参考:Data Binding LibraryData Binding指南 上面两篇博客写的非常详细了,这里我只是...

  • Android jetpack(ViewModel,LiveDa

    笔记,记录一下ViewModel,LiveData,DataBinding的使用小案例。 利用ViewMode点击...

  • JetPack学习笔记之DataBinding(五)

    JetPack学习笔记之DataBinding(五) 使用ObserverField实现数据的双向绑定,即字段变化...

  • MVVM

    DataBinding基础用法 DataBinding入门 Android数据绑定框架DataBinding,堪称...

  • Android: Databinding笔记

    关于databinding databinding,即数据绑定。google帮助我们在android上实现mvvm...

  • DataBinding笔记6

    RecyclerView 1.adapter 部分 通用的adapter activity.xml activit...

  • dataBinding 入门笔记

    Databinding 相关符号 相关文档 示例 点击事件 点击事件02 跳转方法 跳转方法(注解) 问题 inc...

网友评论

      本文标题:DataBinding 笔记

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