我在Firebase
实时数据库中有以下数据结构。我不知道如何提取内容。
我的firebase
实时数据库结构:
root
|--inGroup
|--#userID
|--#randomId:(the string I want to extract is here)
|--#randomId2:(the string I want to extract is here)
|--#randomIdX:(the string I want to extract is here)
任何人都可以教我如何在我的Android应用程序中解压缩它?
我的代码:
从firebase
db:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference groupInviteRef = database.getReference("inGroup").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
groupInviteRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datasnapshot : dataSnapshot.getChildren()) {
-----I am not sure what to fill in here--------
}
}
}
用于保存我想要提取的数据的部分
//Insert a record into InGroup tree
DatabaseReference inGroupRef = FirebaseDatabase.getInstance().getReference("inGroup").child(uid);
inGroupRef.push().setValue(groupId);
我不知道如何从数据库中提取字符串,因为:
1)通常,使用datasnapshot.getValue(XXXX.Class)
来获取值的属性是什么,但这一次,它是一个字符串本身,而不是我自己设置的自定义类。
2)我尝试使用datasnapshot.getvalue(String.class)
。但得到了这个错误:
com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String
任何人都可以教我如何提取我想要的信息吗?或者我在做push().setValue()
时必须放入自定义课程?
提前致谢!
答案 0 :(得分:1)
最后,我使用下面的代码进行编写,不确定为什么在开始时它不起作用。
groupInviteRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String value = snapshot.getValue().toString();
Log.d("val",value);
}
}
答案 1 :(得分:0)
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot noteDataSnapshot : dataSnapshot.getChildren()) {
String key = noteDataSnapshot.getValue().toString();
for (DataSnapshot snapshot : noteDataSnapshot.getChildren()){
snapshot.getKey() // YOUR VALUE
}
}
}