如何将 String 转换为 Uri 并在 Android 中使用 DataBinding 应用于 ImageView 属性 src

How can I convert String to Uri and apply to ImageView attribute src with DataBinding in Android

我正在使用 FirebaseFirestore 并从中获取用户数据。 数据有名称、电子邮件和 imageUri。但 imageUri 类型不是 Uri。这是字符串。 所以我必须将数据转换为 Uri。 所以我用了 Uri.parse(String) 而且我正在使用 DataBinding 和 ViewModel。

这是片段。

var userImage = MutableLiveData<Uri>()  
var userName = MutableLiveData<String>() 
var userEmail = MutableLiveData<String>()

fun initializeUser() {
    firebaseDB.collection(DATA_USERS).document(userId!!).get()
        .addOnSuccessListener {
            val user = it.toObject(User::class.java)
            user?.let {
                userImage.value = Uri.parse(user?.userImageUri)
                userName.value = user?.userName
                userEmail.value = user?.userEmail
            }
        }
}

这是XML。

     <ImageView
          android:id="@+id/info_userProfile"
          android:layout_width="80dp"
          android:layout_height="80dp"
          android:scaleType="centerCrop"
          android:src="@{viewModel.userImage}" />

名字和电子邮件很好用。但是 imageView 没有。

我该如何解决?

您可以使用 BindingAdapter 如下:

 public class DataBindingAdapterUtil {
        @BindingAdapter("android:src")
        public static void setImageUri(ImageView view, Uri userImage) {
            view.setImageURI(userImage);
        }
    }