Я работаю с FireBase в течение пары месяцев, и до сих пор у меня не было проблем до сих пор. Я использую Kotlin и моя проблема проста, но я не могу найти выход. я храню строки в базе данных: путь "/ user / friends", но я не могу изменить имя переменной, и строки перезаписывались сами. Мое решение было использовать «push ()» до «setValue ()», но с этим у меня есть следующая структура firebase:
"users": {
"yvrYpjMwVSPBvMAvDGo26hPlWWQ2": {
"email": "vinibarros.sp@gmail.com",
"friends": {
"-LfD9z6ke7FXFjxUb4td": {
"email": "teste@gmail.com"
},
"-LfDA-NaAYAMoWiPhXy4": {
"email": "teste2@gmail.com"
}
},
"primeiroLogin": true,
"stars": 0,
"tutorialComplete": false,
"uid": "yvrYpjMwVSPBvMAvDGo26hPlWWQ2",
"username": "Vinicius Barros"
}
}
в основном хеш-карты внутри hashmap ps: lol mindblow
как мне получить pushcode.value в массив?
У меня есть пользователь класса, у которого есть переменная друга, до сих пор эта переменная была напечатана как hashMap. и звонок для получения электронной почты был «user.friends.value»
это сработало, потому что был один друг ....
com.google.firebase.database.DatabaseException: не удалось преобразовать значение типа java.util.HashMap в строку
Когда я добавил более одного пользователя, я получил эту ошибку, которая ссылается на пользователя моего класса, где есть hashMap. Но FireBase дает мне другой хэш-карту вместо строки. Я думал о: hashMap<hashMap<String,String>, null>
.
Я пробовал это:
друзья класса:
@Parcelize
class Friend(val hashMap: HashMap < String, String > ? ): Parcelable {
constructor(): this(null)
}
Активность, в которой я показываю друзьям:
val ref2 = FirebaseDatabase.getInstance().getReference("/users/" + cUid + "/friends/")
ref2.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(p0: DataSnapshot) {
p0.children.forEach {
val friend = it.getValue(Friend::class.java)
Log.d("teste", it.toString())
if (friend != null) {
Log.d("teste", friend.hashMap ? .values.toString())
//friends.add(friend.hashMap?.values.toString())
}
}
}
})
это возвращает ноль ....