我正在尝试在 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/