如何使用Kotlin从Firestore中的数组字段中获取数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Kotlin从Firestore中的数组字段中获取数据?相关的知识,希望对你有一定的参考价值。

我需要一些帮助来弄清楚如何从数组数据中的字段检索值。我想要每个字段中的布尔值,并在“ if”语句中使用它们,但无法找到方法。任何帮助将非常感激。最好使用kotlin示例。

这是我尝试用来更改图像的代码。

Firestore Structure


 internal class UserViewHolder(itemView: View) :
        RecyclerView.ViewHolder(itemView) {

        // Hold view refs
        private val usernameTextView: TextView = itemView.usernameTextView
        private val profileUserImage: CircleImageView = itemView.profileUserImage
        private val ratingBar: RatingBar = itemView.sProfileRatingBar
        private val haircutIcon: ImageView = itemView.haircutIcon
        private val waxingIcon: ImageView = itemView.waxingIcon
        private val nailIcon: ImageView = itemView.nailsIcon
        private val makeupIcon: ImageView = itemView.makeupIcon
        private val auth = FirebaseAuth.getInstance()
        private val customUserId = auth.uid.toString()
        val db = FirebaseFirestore.getInstance()
        private val userRef = db.collection("sUsers")





        internal fun bind(model: User) {
            model.apply {
                usernameTextView.text = fullname
                Picasso.get().load(profileImage).into(profileUserImage)
                ratingBar.setRating(model.totalrating)


                if (isHaircut){
                    haircutIcon.setImageResource(R.drawable.ic_profile_black_24dp)
                }else{
                    haircutIcon.setImageResource(R.drawable.profile)
                }
                if(isWaxing){
                    waxingIcon.setImageResource(R.drawable.ic_profile_black_24dp)
                }else{
                    waxingIcon.setImageResource(R.drawable.profile)
                }
                if(isMakeup){
                    makeupIcon.setImageResource(R.drawable.ic_profile_black_24dp)
                }else{
                    makeupIcon.setImageResource(R.drawable.profile)
                }
                if(isNails){
                    nailIcon.setImageResource(R.drawable.ic_profile_black_24dp)
                }else{
                    nailIcon.setImageResource(R.drawable.profile)
                }
            }
        }
    }
答案

正如@DougStevenson在他的评论中提到的那样,看起来您似乎并没有在代码中实际使用userRef。但是,如果要获取services数组的内容,则需要知道不可能简单地以列表的形式获取它。基本上,您需要获取对Rj6H ... 4Fy1文档的引用,调用get(),然后在onComplete()函数内部使用以下命令获取该数组:

documentSnapshot.get("services")

返回的对象的类型是ListHashMaps。因此,您需要遍历该列表并获取所需的数据。

以上是关于如何使用Kotlin从Firestore中的数组字段中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

作为 Kotlin 中的函数的结果,如何从 Firestore 数据库返回列表?

作为 Kotlin 中的函数的结果,如何从 Firestore 数据库返回列表?

如何从 kotlin 中的 firestore 读取映射数据

如何使用kotlin滑动删除存储在firestore中的recyclerview项目?

Kotlin - 如何执行 onCompleteListener 从 Firestore 获取数据?

如何在 Android Studio 中使用 Kotlin 从 Firestore 数据库中获取下一条和上一条数据?