Почему моя база данных firebase не может преобразовать объект типа java.util.Список массивов для ввода

# #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 в реальном времени

База данных Firebase в реальном времени

узел категории

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос и добавьте структуру своей базы данных в виде скриншота.

2. Вы поделились снимком MostPopular экрана дочернего узла, хотя вы запрашиваете Category дочерний узел в коде.. Можете ли вы опубликовать Category снимок экрана

3. @AlexMamo Я добавил структуру базы данных в виде скриншота в последней строке.

4. @Zain Я добавил дочерний узел категории в структуру базы данных в качестве скриншота в последней строке

5. @AlexMamo Мне нужна твоя помощь