"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"
}
}
基本上是散列表ps:lol mindblow中的散列表
如何将pushcode.value放入数组列表中?
我有一个具有user变量的类用户,直到现在此变量的类型为hashMap。而获取电子邮件的电话是“ user.friends.value”
之所以奏效是因为是一个朋友。...
com.google.firebase.database.DatabaseException:无法将类型java.util.HashMap的值转换为String
当我添加多个用户时,出现此错误,该错误引用了我的类用户,该用户具有“ 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())
}
}
}
})
这总是返回null。...
答案 0 :(得分:0)
在您的Friend
类中,Firebase客户端使用以下结构为每个朋友查找JSON:
"-LfD9z6ke7FXFjxUb4td": {
"hashMap": {
...
}
},
这是因为您正在使用属性Friend
来定义hashMap
类,例如:class Friend(val hashMap: HashMap < String, String > ? )
。
要阅读当前结构,您需要定义一个data class
,如下所示:
data class Friend (
val email: String? = null
}
现在email
类中的Friend
与JSON中的email
属性匹配。而且由于email
具有默认值,因此Friend
类将具有Firebase依赖的默认无参数构造函数。
答案 1 :(得分:0)
解决了!
进入/ friends之后 我这样做了:
var friends : ArrayList<String> = arrayListOf()
我在其中得到字符串朋友的onDataChanged
override fun onDataChange(p1: DataSnapshot) {
p1.children.forEach { it1 ->
val friend = it1.value as String
friends.add(friend)
}
}