Android bindingadapter不更新值

标签 android mvvm data-binding android-databinding android-mvvm

我正在尝试在 Picasso 的帮助下使用绑定(bind)适配器在“imageView”中设置图像 URL。

我的 XML ImageView :

  <ImageView
                        android:id="@+id/imgProfile"
                        android:layout_width="match_parent"
                        android:layout_height="110dp"
                        android:background="@color/transparent"
                        android:padding="5dp"
                        bind:imgUrl="@{vm.imageUrl}"
                        android:scaleType="fitCenter"
                        android:translationZ="5dp" />

我的 View 模型:
  public ObservableField<String> getImageUrl() {
    return imageUrl;
}

private ObservableField<String> imageUrl = new ObservableField<>();


@BindingAdapter({"bind:imgUrl"})
public static void setProfilePicture(ImageView imageView, String imgUrl) {
    if (imgUrl == null) {
        Picasso.get().load(R.drawable.ic_registration_logo).into(imageView);
    } else
        Picasso.get().load(imgUrl).placeholder(R.drawable.ic_registration_logo).into(imageView);
}

现在在启动“setProfilePicture”时调用并设置默认图像。然后我进行 API 调用以在 API 成功时获取图像的 URL 我将值设置为“imageUrl”
  imageUrl.set("URL RECEIVED FROM SERVER");

它不会在 View 中更新。意味着“setProfilePicture”不再被调用。

最佳答案

您需要调用notifyPropertyChanged(BR.imageUrl)改变值后。

What notifyPropertyChanged(int fieldId) does?

Notifies listeners that a specific property has changed. The getter for the property that changes should be marked with Bindable to generate a field in BR to be used as fieldId.



here 查看更多信息

关于Android bindingadapter不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588253/

相关文章:

DataGridTemplateColumn 中的 WPF 数据绑定(bind) ComboBox

javascript - ReactJs:由于使用 Array.map,输入值不会改变

android - onRetainCustomNonConfigurationInstance 什么时候被调用?在设备端更改语言环境期间是否会调用它?

Android Drawable 导入器错误 - "You have to select the Android Icons asset folder in the settings"

android - 一段时间后 UDP 传输停止

android - TabWidget 不填充 Horizo​​ntalScrollView

windows-phone-8 - 可以在不依赖 Xamarin 的情况下使用 mvvmcross 吗?

wpf - 在 WPF 中,如何设置按钮的单击事件以更改网格的可见性?

android - 如何解决ViewModel RunTimeException

c# - 数据绑定(bind) : Having data reflect changes of a control's value that was modified via code