【问题标题】:Upload and Retrieve Data Class with Image Uri使用图像 Uri 上传和检索数据类
【发布时间】:2022-01-12 21:55:28
【问题描述】:

我想将 Android Studio Kotlin 中的数据类保存到 firebase。 我现在如何将普通数据(如字符串)保存到我的 RealtimeDatabase,但现在我还想存储一个 Image Uri,它是我的 DataClass 的一部分。

这就是我的数据类的样子:

data class ExerciseModel(
var fBid: String = "",
var exercise_name: String = "",
var muscle_group: String = "",
var image: Uri = Uri.EMPTY)

我已经实现了一个功能,我可以为我的 imageURI 获取图像并将其绑定到我的应用程序中的 imageView,我还可以使用以下功能上传没有图像的类。 类型为练习模型的数据类对于称为练习的数组列表是安全的。

   override fun create(exercise: ExerciseModel) {

   database = FirebaseDatabase.getInstance().reference
   val key = database.push().key

    key?.let{
        exercise.fBid = key
        exercises.add(exercise)
        database.child("exercises").child(key).setValue(exercise)

   }

}

现在我还想上传在我的上传到 Firebase 中包含图像并再次检索所有这些数据。以下是我在启动应用程序时检索所有数据的函数。

    fun loadExerciseData(){
    database = FirebaseDatabase.getInstance().getReference("exercises")
    database.get().addOnSuccessListener {
            if(it.exists()){
                for(exerciseSnapshot in it.children){
                    val tempexercise = exerciseSnapshot.getValue(ExerciseModel::class.java)
                    exercises.add(tempexercise!!)
                }
            }

    }
}

现在谁能帮我在从 fireBase 上传和检索数据时包含图像 Uri 吗?

【问题讨论】:

  • 这段代码中到底有什么不符合您的预期?
  • 它确实有效,但我不包括 Image Uri,因为我不确定如何通过使用存储来实现这一点
  • 所以现在代码只有在我从数据类中删除图像 Uri 时才有效,如果我包含它它不起作用,因为我认为实时数据库不能只映射图像 Uri。但我不知道如何解决它

标签: android kotlin firebase-realtime-database firebase-storage


【解决方案1】:

如果您使用 String 而不是 Uri,对您来说会更容易。 Firebase 知道如何从对象中序列化字符串,但它不知道如何处理 Uri。

如果您的应用程序出于某种原因需要 Uri 对象,您始终可以使用 Uri.parse() 将字符串转换为 Uri。

【讨论】:

  • 我是否需要使用存储,或者我可以将类型更改为 String 并保持我的代码在大多数情况下保持原样
  • 所以我将图像类型更改为字符串。如果我现在创建一个练习,我不会收到错误,它会在我的 RecyclerView 中显示图像。但是如果我关闭我的应用程序并重新运行它,数据仍然显示在我的 RecyclerView 中,但图像不是。如果我然后使用相同的图片添加一个新的练习,它就会出现,但如果我使用另一张图片添加一个练习,它不会。我认为这意味着我需要先完善该图像字符串的路径,然后才能识别它。您对如何解决这个问题有什么建议?
猜你喜欢
  • 2013-09-26
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2012-08-05
  • 2017-02-14
  • 1970-01-01
  • 2015-06-13
  • 2017-07-18
相关资源
最近更新 更多