Некоторые из моих данных хранятся в Firebase, как на скриншоте ниже, под родительским именем «голоса»:
Япытаясь получить только значение (-1), но продолжаю получать весь HashMap.
Ключ в этом случае представлен в моем коде как переменная с именем inititorId
, а postVotesSnapshot представляет родительский снимок, который содержит много детейкак на скриншоте, который я прикрепил.
Я пробовал:
postVotesSnapshot.child(initiatorId).value
или postVotesSnapshot.child(initiatorId).getValue(Integer::class.java)
И оба получили мне весь HashMap с ключомвызывая сбой, потому что мне нужно, чтобы значение было Int.
Я пытался:
val valueHash = postVotesSnapshot.child(initiatorId).getValue(HashMap::class.java)
val myValue = valueHash[initiatorId]
Но это не работает с *. 1024 *
ЯЯ не уверен, что пошло не так, поскольку код работал до этого с первым вариантом, который я упомянул, и сегодня он неожиданно выдает ошибку.
Вот полный слушатель:
val refVotes = if (postType == 0) {
FirebaseDatabase.getInstance().getReference("/questions/$mainPostId/main/votes")
} else {
FirebaseDatabase.getInstance().getReference("/questions/$mainPostId/answers/$specificPostId/votes")
}
refVotes.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(postVotesSnapshot: DataSnapshot) {
setVotesCount(specificPostId, mainPostId, votesView, postType)
if (postVotesSnapshot.hasChild(initiatorId)) {
val voteValue = postVotesSnapshot.child(initiatorId).getValue(Integer::class.java) //this line is the problematic one
//I do stuff
}
}
})
}