如何将“ this”视图传递给DataBinding?

时间:2018-12-27 12:17:56

标签: android android-databinding

是否可以将视图传递给数据绑定。

例如,我想写这样的东西:

<ImageView
    android:layout_width="40dp"
    android:layout_height="40dp"
    bind:imageUrl="@{model.imageUrl(this.width, this.height)}" 
/>

3 个答案:

答案 0 :(得分:1)

您可以传递视图本身的引用,而不是传递(this.width, this.height),例如(将android:id传递给您的imageview)

bind:imageUrl="@{model.imageUrl(idOfImageView}"

在您的方法中,您可以从视图本身获取高度和宽度。

答案 1 :(得分:0)

假设您具有自定义的 BindingAdapter 方法,如下所示:

{
 "_id": "ObjectId(User)",
 "username": "username",
 "communities": [
  {
   "role": "admin",
   "community": {
     "_id": "ObjectId(Comm1)",
     "title": "Comm1Title",
     "membersCount": 10
   }
  },
  {
   "role": "member",
   "community": {
     "_id": "ObjectId(Comm2)",
     "title": "Comm2Title",
     "membersCount": 5
   }
  }
 ],
}

选中here

答案 2 :(得分:0)

这是@BindingAdapter批注用于通过数据绑定加载图像的方式

在布局标记中添加此行

   xmlns:app="http://schemas.android.com/apk/res-auto"

这是您的ImageView

  <ImageView 
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:loadImage="@{imageUrl}"/>


@BindingAdapter({"loadImage"})
public static void loadImage(ImageView imageView, String imageUrl) {

 // Load image with your image loading library ,like with Glide or Picasso or any of your favourite

}