databinding 入门 加载本地图片和加载网络图片

databinding 加载图片需要使用注解 

下面 说下使用方法

还是先从布局开始把

<?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">

    <data>
        <variable
            name="item"
            type="com.hxm.Item"/>

    </data>

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.title}" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.label}" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.content}"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            app:imageUrl="@{item.image}" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:src="@{item.photo}" />

    </LinearLayout>
</layout>

里面有文字有图片

然后创建一个Item

public class Item {
    private String title;
    private String label;
    private String content;
    private String image;
    private int photo;


    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Item(String title, String label , String content, String image,int photo) {
        this.title = title;
        this.label = label;
        this.content = content;
        this.image = image;
        this.photo = photo;
    }

    public int getPhoto() {
        return photo;
    }

    public void setPhoto(int photo) {
        this.photo = photo;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

代码中三个步骤

public class DataActivity extends AppCompatActivity{

    DataActivityLayoutBinding binding;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 1.获取<data />标签对象
         binding = DataBindingUtil.setContentView(this,R.layout.data_activity_layout);
        // 2.创建Item对象
        Item item = new Item("父亲的背景","散文","我与父亲不相见已二年余了,我最不能忘记的是他的背影", "https://img.52z.com/upload/news/image/20180621/20180621055651_47663.jpg",R.mipmap.ele);
        // 3.绑定到mUser到布局对象中
        binding.setItem(item);

里面有一个网址和一个本地图片, 如果这样运行是不会显示图片的,还要有BindingAdapter 注解才行

具体代码如下

public class ImageViewAdapter {
    @BindingAdapter("android:src")
    public static void setSrc(ImageView view, Bitmap bitmap) {
        view.setImageBitmap(bitmap);
    }

    @BindingAdapter("android:src")
    public static void setSrc(ImageView view, int resId) {
        view.setImageResource(resId);
    }


    @BindingAdapter("imageUrl")
    public static void setSrc(ImageView imageView, String url) {
        Glide.with(imageView.getContext()).load(url)
                .placeholder(R.mipmap.ic_launcher)
                .into(imageView);
    }


    @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("android:src") 网络图片是@BindingAdapter("imageUrl")

网络图片不要忘记添加添加网络权限 

然后看下效果图

发布了658 篇原创文章 · 获赞 250 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/qq_33210042/article/details/103472388
今日推荐