Java 布尔和Firebase数据库
我正在开发一个应用程序,它使用Firebase数据库来存储一些看起来与此类似的布尔值Java 布尔和Firebase数据库,java,android,firebase,firebase-realtime-database,boolean,Java,Android,Firebase,Firebase Realtime Database,Boolean,我正在开发一个应用程序,它使用Firebase数据库来存储一些看起来与此类似的布尔值 "TEST" : { "TEST" : { "Current_job" : { "important_job" : true, "washed" : true }, "colour" : "test", "date" :
"TEST" : {
"TEST" : {
"Current_job" : {
"important_job" : true,
"washed" : true
},
"colour" : "test",
"date" : "test",
"doors" : "test",
"enginesize" : "test",
"fuel" : "test",
"lotnumber" : "test",
"manufacturer" : "test",
"model" : "test",
"reg" : "TEST"
}
我使用应用程序中的复选框激活它们。勾选该复选框后,它会将布尔值true推送到我的数据库,而将false取消勾选
我想在另一个活动中调用这些布尔值,并以与使用共享首选项类似的方式使用它们
所以我从下面Frank的答案中复制,但我得到了一个空指针错误
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot valueSnapshot: dataSnapshot.getChildren()){
Boolean a,b,c,d;
a = valueSnapshot.child("important_job").getValue(Boolean.class);
这就是空指针错误所在的位置
if (a){
CheckBox cb1 = (CheckBox)relativeLayout.findViewById(R.id.cbimportant);
cb1.setChecked(true);
}else{
CheckBox cb1 = (CheckBox)relativeLayout.findViewById(R.id.cbimportant);
cb1.setChecked(false);
}
}
}
数组是一种非常特殊的数据结构。例如,在JSON/Firebase中,您拥有的三个名称的数组将像这样存储:
["washed", "polished", "waxed"]
{
"washed": true,
"polished": false,
"waxed": false
}
正如您可能注意到的,这意味着您丢失了布尔值。这是因为数组中的元素未命名
您显示的更有可能是所谓的关联映射,或者只是键值对。在JSON/Firebase中存储如下:
["washed", "polished", "waxed"]
{
"washed": true,
"polished": false,
"waxed": false
}
无论哪种方式,如果显示实际的JSON(文本形式,无屏幕截图),都会更容易提供帮助。您可以通过单击页面中的“导出JSON”链接来实现这一点
如果希望从中同时获取键和值,请将侦听器附加到其上方的节点,并循环快照的子节点,如下所示:
Database currentJobRef = FirebaseDatabase.getInstance().getReference("CurrentJob");
currentJobRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot valueSnapshot: dataSnapshot.getChildren()) {
System.out.println(valueSnapshot.getKey()); // prints "washed", "published", "waxed"
System.out.println(valueSnapshot.getValue(Boolean.class)); prints true, false, false
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
处理布尔值的工作原理与处理字符串和整数的工作原理完全相同。您确定您在这里实际使用的是阵列吗?这三个布尔值似乎不适合在一个数组中。当有一组布尔值时,它不是被称为数组吗?@Frank van Puffelen谢谢你的帮助朋友你能检查我的问题吗?我更新了代码cheerz@Peter哈达,为什么我的问题被搁置了?干杯朋友