美文网首页
Jetpack学习(二)——databinding(4)--Bi

Jetpack学习(二)——databinding(4)--Bi

作者: 岁月静好浅笑安然 | 来源:发表于2020-01-10 15:42 被阅读0次

databinding学习第四天

BindingAdapter

BindingAdapter官方说绑定适配器提供的自定义方法

  • BindingAdapters.java
public class BindingAdapters {
   @BindingAdapter({"app:imageUrl", "app:placeHolder", "app:error"})
    public  static  void loadImage(ImageView imageView, String url,Drawable placeholder,Drawable error) {
    Glide.with(imageView.getContext())
            .load(url)
            .placeholder(placeholder)
            .error(error)
            .into(imageView);
    }
}
  • activity_other.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="user"
            type="com.hwp.databindingdemo.ui.OtherActivity.User" />
        <import type="android.view.View.OnClickListener"/>

        <variable
            name="myClick"
            type="OnClickListener" />
        <variable
            name="error"
            type="android.graphics.drawable.Drawable" />
        <variable
            name="placeholder"
            type="android.graphics.drawable.Drawable" />
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.OtherActivity">

        <ImageView
            android:onClick="@{myClick}"
            app:error="@{error}"
            app:placeHolder="@{placeholder}"
            app:imageUrl="@{user.imgUrl}"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
       <!-- 此处还可以做如下引用,但是只支持drawable,不支持mipmap,不知道是不是官方的bug,还是我自己没有注意到
            app:error="@{@drawable/pic_error}"
            app:placeHolder="@{@drawable/pic_error}"
            
            />-->
    </LinearLayout>
</layout>
  • OtherActivity.java
public class OtherActivity extends AppCompatActivity implements View.OnClickListener {
    private ActivityOtherBinding  otherBinding;
    private   User user;
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        otherBinding= DataBindingUtil.setContentView(this,R.layout.activity_other);
        otherBinding.setError(getDrawable(R.mipmap.pic_error));
        otherBinding.setPlaceholder(getDrawable(R.mipmap.pic_loading));
        user=new User();
        otherBinding.setUser(user);
        user.imgUrl.set("https://up.enterdesk.com/edpic_360_360/e8/08/6e/e8086e39d5924405f75d42cdbb9dd34b.jpg");
        otherBinding.setMyClick(this);
    }

    @Override
    public void onClick(View view) {
        user.imgUrl.set("https://c-ssl.duitang.com/uploads/item/201802/27/20180227094809_JiL5V.thumb.700_0.jpeg");
        otherBinding.setUser(user);
    }
    public class User extends BaseObservable{
        public  final  ObservableField<String> imgUrl=new ObservableField<>();
    }
}


图示:


图一 图二

相关文章

网友评论

      本文标题:Jetpack学习(二)——databinding(4)--Bi

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