Как получить данные из базы данных Firebase и сохранить их в ListArray <Class>? – Котлин

Я столкнулся с некоторыми проблемами в получении данных из моей базы данных Firebase … Вот мой простой код

class Match (val teamOne: String, val teamTwo: String, val betType: String) private var database = FirebaseDatabase.getInstance() private var myRef = database.getReference() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) myRef.child("matches").addValueEventListener(object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot?) { val matches = snapshot!!.children matches.forEach(){ println(it.value.toString()) } } override fun onCancelled(p0: DatabaseError?) { } }) } 

Это то, что я получаю от БД:

I / System.out: {bet = GG, team1 = Ювентус, team2 = Реал Мадрид}

I / System.out: {bet = Over 2.5, team1 = Napoli, team2 = Roma}

I / System.out: {bet = 2, team1 = Inter, team2 = Milan}

I / System.out: {bet = X, team1 = Аталанта, team2 = Lazio}

I / System.out: {bet = X, team1 = Crotone, team2 = Spezia}

Мой вопрос: как создать ListArray<Match> ?

Спасибо всем !!!

Если вы все еще задаетесь вопросом и не хотите использовать другую базу данных, есть два способа добиться этого:

 val mapper = object : GenericTypeIndicator<HashMap<String, Match>>() {} val list = arrayListOf<Match>() val map = snapshot.getValue(mapper) map?.forEach { list.add(it.value) } 

Или:

 val list = MutableList<Match> = mutableListOf() snapshot.children.mapNotNullTo(list) { it.getValue<Match>(Match::class.java) } 

Отказ от ответственности: класс соответствия может быть data class