# #android #firebase #kotlin #firebase-realtime-database
Вопрос:
Я получаю исключение базы данных Firebase «Не удается преобразовать объект типа java.util.Список массивов для ввода com.muasya.clientapp.Model.FoodModel» когда я нажимаю на этот процесс, приложение выходит из строя и показывает ошибку, любую идею об ошибке и о том, как ее исправить
2021-06-12 08:52:11.816 4753-4753/com.muasya.clientapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.muasya.clientapp, PID: 4753
com.google.firebase.database.DatabaseException: Can't convert object of type java.util.ArrayList to type com.muasya.clientapp.Model.FoodModel
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(CustomClassMapper.java:436)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(CustomClassMapper.java:232)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(CustomClassMapper.java:80)
at com.google.firebase.database.DataSnapshot.getValue(DataSnapshot.java:203)
at com.muasya.clientapp.HomeActivity$onBestDealFoodItemClick$1$onDataChange$1.onDataChange(HomeActivity.kt:304)
at com.google.firebase.database.Query$1.onDataChange(Query.java:191)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6153)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
Это мой домашний активий.кт
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
fun onBestDealFoodItemClick(event: BestDealItemClick)
{
if (event.model != null)
{
dialog!!.show()
FirebaseDatabase.getInstance()
.getReference("Category")
.child(event.model!!.menu_id!!)
.addListenerForSingleValueEvent(object:ValueEventListener{
override fun onCancelled(p0: DatabaseError) {
dialog!!.dismiss()
Toast.makeText(this@HomeActivity, "" p0.message,Toast.LENGTH_SHORT).show()
}
override fun onDataChange(p0: DataSnapshot) {
if (p0.exists())
{
Common.categorySelected = p0.getValue(CategoryModel::class.java)
//Load food
FirebaseDatabase.getInstance()
.getReference("Category")
.child(event.model!!.menu_id!!)
.child("foods")
.orderByChild("id")
.equalTo(event.model.food_id)
.limitToLast(1)
.addListenerForSingleValueEvent(object:ValueEventListener{
override fun onCancelled(p0: DatabaseError) {
dialog!!.dismiss()
Toast.makeText(this@HomeActivity, "" p0.message,Toast.LENGTH_SHORT).show()
}
override fun onDataChange(snapshot: DataSnapshot) {
if (p0.exists())
{
for (foodSnapshot in p0.children)
Common.foodSelected = foodSnapshot.getValue(FoodModel::class.java)
navController!!.navigate(R.id.nav_food_detail)
}
else
{
Toast.makeText(this@HomeActivity, "Item doesn't exist",Toast.LENGTH_SHORT).show()
}
dialog!!.dismiss()
}
})
}
else
{
dialog!!.dismiss()
Toast.makeText(this@HomeActivity, "Item doesn't exist",Toast.LENGTH_SHORT).show()
}
}
})
}
}
Общее.кт
object Common {
val COMMENT_REF: String="Comments"
var foodSelected: FoodModel?=null
var categorySelected: CategoryModel?=null
val CATEGORY_REF: String ="Category"
val FULL_WIDTH_COLUMN: Int = 1
val DEFAULT_COLUMN_COUNT: Int = 0
val BEST_DEALS_REF: String="BestDeals"
val POPULAR_REF:String="MostPopular"
val USER_REFERENCE="Users"
var currentUser:UserModel?=null
Пищевая модель.кт
class FoodModel {
var key: String?=null
var name: String?=null
var image: String?=null
var id: String?=null
var description: String?=null
var price: Long=0
var addon: List<AddonModel> = ArrayList<AddonModel>()
var size: List<SizeModel> = ArrayList<SizeModel>()
var ratingValue:Double = 0.toDouble()
var ratingCount:Long = 0.toLong()
Модель категории.kt
package com.muasya.clientapp.Model
class CategoryModel {
var menu_id:String?=null
var name:String?=null
var image:String?=null
var foods:List<FoodModel>?=null
}
База данных Firebase в реальном времени
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос и добавьте структуру своей базы данных в виде скриншота.
2. Вы поделились снимком
MostPopular
экрана дочернего узла, хотя вы запрашиваетеCategory
дочерний узел в коде.. Можете ли вы опубликоватьCategory
снимок экрана3. @AlexMamo Я добавил структуру базы данных в виде скриншота в последней строке.
4. @Zain Я добавил дочерний узел категории в структуру базы данных в качестве скриншота в последней строке
5. @AlexMamo Мне нужна твоя помощь