如何将字符串转换为Uri并在Android中通过数据绑定应用于ImageView属性src

如何将字符串转换为Uri并在Android中通过数据绑定应用于ImageView属性src,android,android-imageview,android-databinding,android-viewmodel,Android,Android Imageview,Android Databinding,Android Viewmodel,我正在使用FirebaseFirestore并从中获取用户数据。 数据包含名称、电子邮件和imageUri。但是imageUri类型不是Uri。这是一根绳子。 所以我必须将数据转换成Uri。 所以我使用了Uri.parse(字符串) 我还使用了数据绑定和视图模型 下面是片段 var userImage = MutableLiveData<Uri>() var userName = MutableLiveData<String>() var userEmail = M

我正在使用FirebaseFirestore并从中获取用户数据。 数据包含名称、电子邮件和imageUri。但是imageUri类型不是Uri。这是一根绳子。 所以我必须将数据转换成Uri。 所以我使用了Uri.parse(字符串) 我还使用了数据绑定和视图模型

下面是片段

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
            }
        }
}
var userImage=MutableLiveData()
var userName=MutableLiveData()
var userEmail=MutableLiveData()
趣味初始化器(){
firebaseDB.collection(DATA\u USERS).document(userId!!).get()
.addOnSuccessListener{
val user=it.toObject(user::class.java)
用户?,让我来{
userImage.value=Uri.parse(用户?.userImageUri)
userName.value=用户?.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);
        }
    }

使用活页夹我很乐意帮助你。如果它解决了您的问题,请将其标记为答案