当前位置: 首页 > 知识库问答 >
问题:

加载带有数据绑定的图像

冉子石
2023-03-14

我想使用Android数据绑定设置图像。我已经阅读了很多关于这方面的教程,但图片仍然没有出现。

在我的模型中,我有以下方法:

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

        Log.i("III", "Image - " + url);
        Context context = view.getContext();
        Glide.with(context).load(GlobalValues.img_start_url + url).into(view);
    }

我还应该提到“III”、“Image-”url永远不会打印,所以问题不在于Glide。

这是我的xml:

 <data>

    <variable
        name="feeling"
        type="bg.web3.helpkarma.ViewModels.Feeling"/>

</data>

<ImageView
            android:layout_width="wrap_content"
            android:id="@+id/icon"
            android:layout_height="wrap_content"
            android:layout_marginRight="16dp"
            app:imageUrl="@{feeling.maleIcon}"/>

maleIcon是一个url字符串

@SerializedName("male_icon")
@Expose
private String maleIcon;

共有3个答案

上官培
2023-03-14

在这一行:

fun loadImage(layout: ConstraintLayout, url:String)

添加 指向url的类型。结果如下:

fun loadImage(layout: ConstraintLayout, url:String?)

在我的例子中,我将布局作为参数,而不是图像视图。这应该行得通。

隆康平
2023-03-14

Android数据绑定@BindingAdapter仅支持android命名空间或不支持。因此将定义替换为

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

另外,loadImage()将永远不会被调用。maleIcon为空。

顾永福
2023-03-14

以下是步骤:1。在模型类的注解@bindapter中声明这个方法(“{bind:应该是我们在这里得到imageurl的同一个变量“}”)

  @BindingAdapter({"bind:imageUrl"})
public static void loadImage(ImageView view, String imageUrl) {
    Picasso.with(view.getContext())
            .load(imageUrl)
            .placeholder(R.drawable.placeholder)
            .into(view);}

2.转到适配器的xml文件并添加app: ImageUrl="@{user.imageUrl}"。在这一行中,属性app: Imageurl和user.imageUrl应该是我们在bean类中获取图像url的相同参数。我们也定义了相同的第一步。

 <ImageView
            android:id="@+id/restaurantIV"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            android:scaleType="fitXY"
            app:image="@{user.image}"
            tools:ignore="ContentDescription"/>

3.)别忘了添加,数据是Bean类的名称对象的用户名`

    <variable
        name="user"
        type="com.brst.cocktailclub.beans.restaurantSearch.Datum"/>
</data>`

4.)同时添加xmlns:app=”http://schemas.android.com/apk/res-auto“在布局参数中。

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

5.)请记住,您的Bean类应该扩展BaseWatable。

6.)最后在适配器中设置数据

 public void onBindViewHolder(@NonNull RestaurantAdapter.ViewHolder viewHolder, int i) {

    Datum datum=data.get(i);

    viewHolder.customRestaurantListBinding.setUser(datum);


}
 类似资料:
  • 我正在尝试加载带有数据绑定的图像。但我一直没有忘记。我的问题在哪里?下面是我的代码和布局结构。 MyItemViewModel。kt 布局xml

  • 问题内容: 我正在尝试通过JSON基于页面其他位置的按钮单击来重新加载Highcharts图表的数据。最初,我想显示一组默认数据(按类别支出),然后根据用户输入(例如按月支出)加载新数据。我想到的最简单的从服务器输出JSON的方法是将GET请求传递到PHP页面,例如 $ .get(’/ dough / includes / live-chart.php?mode = month’ ,检索此信息按钮

  • 我有以下问题:我正在使用Koin进行DI和持久化的空间。现在我的房间依赖关系如下: 但是我得到了这里描述的错误:Android room Persistent:AppDatabase_Impl不存在 Koin模块定义: 怎么会这样呢?

  • 问题内容: 我正在使用Spring MVC处理JSON POST请求。在幕后,我使用的是在Jackson JSON处理器上构建的MappingJacksonHttpMessageConverter,并在使用mvc:annotation驱动时启用了该功能。 我的一项服务收到了一系列操作: 我发现杰克逊将requestBody映射到java.util.LinkedHashMap项列表(简单数据绑定)。

  • 我已经在现有代码中使用了数据绑定,现在我正在迁移到持久性空间。我已经按照Florina的博客中提到的room的步骤去做了 当我删除房间依赖时,我的代码构建良好,没有java代码错误或BR相关错误 他们俩似乎不在一起工作 迄今采取的步骤: 按此处建议将BaseObservable更改为Observable 将Android Studio更新到3.0.1 尝试使用gradle最新插件canary 6

  • 我有一个带有servicebus触发器和blob输入绑定的python函数。blob的名称与队列消息的内容匹配。我的function.json文件如下所示: 它就像一种魅力。 Id创建一个具有相同绑定的C#函数,但它似乎不起作用。我使用了相同的文件。