Не удается преобразовать объект типа java.lang.Логическое значение для ввода

# #android #kotlin #firebase-realtime-database

Вопрос:

У меня проблема с объектом, а именно, при создании списка объектов он получает ошибку, как в названии.

Код Котлина

 private fun readNotification() {  val firebaseUser = FirebaseAuth.getInstance().currentUser  val reference = FirebaseDatabase.getInstance().getReference("Notifications")  .child(firebaseUser!!.uid)  reference.addValueEventListener(object : ValueEventListener{  override fun onDataChange(dataSnapshot: DataSnapshot) {  notificationList.clear()  for (snapshot : DataSnapshot in dataSnapshot.children){  val notification = snapshot.getValue(NotificationData::class.java)!!  notificationList.add(notification)  }  notificationList.reverse()  notificationAdapter.notifyDataSetChanged()  }   override fun onCancelled(error: DatabaseError) {  }  })  }  

Объектный код

 class NotificationData(  var userId: String = "",  var text: String = "",  var postId: String = "",  var isPost: Boolean = false ) {}  

Структура огневой базы

Структура огневой базы

Я знаю, что ошибка в этой строке, потому что объект имеет логическую переменную

 val notification = snapshot.getValue(NotificationData::class.java)!!  

Я просто не знаю, как с этим теперь справиться

Ответ №1:

Хотя я думал, что картограф Firebase JSON обрабатывает isBla получатели формата, в вашем JSON есть только одно логическое значение, поэтому имеет смысл, что проблема возникает именно там.

Вы можете изменить логическое значение на это:

 var post: Boolean = false  

Или добавьте явную @PropertyName аннотацию:

 @PropertyName("post") var isPost: Boolean = false  

Тем не менее, я думаю, что картограф Firebase по умолчанию ожидает, что он будет обрабатывать логические isXyz свойства, поэтому я бы рекомендовал добавить запрос функций в репозиторий Github SDK.