You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin+Firebase开发:Firestore字符串值无法加载求助

问题解决:Firestore字符串值无法显示在TextView

核心原因

你的数据模型类User的字段名与Firestore存储的字段名不匹配,导致自动解析时无法完成属性映射,最终字段值为空。

修复方案

1. 修正数据模型类

Firestore中的字段为customer、employee、date、time,但你的模型类字段是tvCustomer、tvEmployee、tvDate、tvTime,名称完全不对应。直接修改模型类字段名与数据库保持一致:

data class User(
    var customer: String? = null,
    var employee: String? = null,
    var date: String? = null,
    var time: String? = null
)

2. 调整Adapter赋值逻辑

模型类字段名修改后,Adapter中的赋值代码也要对应更新,同时注意你原代码中的变量名笔误(holder.data、holder.hora需与ViewHolder中的变量名一致):

override fun onBindViewHolder(holder: MyAdapter.MyViewHolder, position: Int) {
    val user : User = userList[position]
    holder.customer.text = user.customer
    holder.employee.text = user.employee
    holder.date.text = user.date
    holder.time.text = user.time
}

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val customer : TextView = itemView.findViewById(R.id.tvCustomer)
    val employee : TextView = itemView.findViewById(R.id.tvEmployee)
    val date : TextView = itemView.findViewById(R.id.tvDate)
    val time : TextView = itemView.findViewById(R.id.tvTime)
}

可选方案:用注解指定映射(不修改模型类字段名)

如果不想改动模型类字段名,可以使用Firestore的@PropertyName注解显式指定数据库字段映射关系:

import com.google.firebase.firestore.PropertyName

data class User(
    @PropertyName("customer") var tvCustomer: String? = null,
    @PropertyName("employee") var tvEmployee: String? = null,
    @PropertyName("date") var tvDate: String? = null,
    @PropertyName("time") var tvTime: String? = null
)

此方案下Adapter代码无需修改,但推荐第一种方案,保持字段名一致更直观易维护。

额外检查项

  • 确认Firestore中agendamento集合的文档确实包含customer、employee、date、time字段,且字段值不为空字符串
  • 检查userArrayList(数据添加的集合)与userList(Adapter使用的集合)是否为同一数据源,避免数据不同步

内容的提问来源于stack exchange,提问作者Santon99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:32:04