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
相关产品推荐
相关产品推荐

