如何在android中创建自定义数据绑定?(android工作室)

Ahm*_*deh 9 java data-binding android android-studio

我想要实现自定义功能,从下载图像ImageView像这样app:imageUrl="@{status.imageUrl}"在下面的代码:

 <?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="status"
          type="com.databinding.data.Status" />

      </data>

      <RelativeLayout
        android:id="@+id/status_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
          android:id="@+id/status_avatar"
          android:layout_width="64dp"
          android:layout_height="64dp"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_alignParentTop="true"
          android:contentDescription="@null"
          app:imageUrl="@{status.imageUrl}"/>

      </RelativeLayout>
    </layout>
Run Code Online (Sandbox Code Playgroud)

如何编写这个可以自动下载图像的功能@{status.imageUrl}?使用此库com.android.databinding.

Beh*_*zad 4

对于这项工作,您需要一个像android databinding lib这样的库。
在此库中,首先将以下脚本添加到build.gradle项目中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'com.android.databinding:dataBinder:1.0-rc4'
    }
}
Run Code Online (Sandbox Code Playgroud)

并将此代码添加到build.gradle模块文件的顶部:

apply plugin: 'com.android.databinding'
Run Code Online (Sandbox Code Playgroud)

并创建您的类,例如:class BindingCustom并编写以下代码:

public class BindingCustom {

    @BindingAdapter({"imageUrl"})
    public static void loadImage(final ImageView view, String url) {

        Picasso.with(view.getContext()).load(url).into(view);

    }
}
Run Code Online (Sandbox Code Playgroud)

在课程中,BindingCustom您可以loadImage通过自己感兴趣的方式从 URL 下载图像,但我使用Picasso库,因为它是此作业的通用库,您可以将其更改为您的代码。

这是获取更多信息的有用链接