您正在尝试在我的数据库中检查false的布尔值,但是我收到的错误是将java.lang.Boolean类型的值转换为String失败。
Query q = databaseReference.child("Chatmessages").child(currentChatUser).child(userId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String true3 = "true";
for(DataSnapshot ds : dataSnapshot.getChildren()) {
if(ds.child("read").getValue(String.class).equals(false)){
ds.child("read").getRef().setValue(true);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
q.addListenerForSingleValueEvent(eventListener);
答案 0 :(得分:1)
您的比较错误:
gsutil rewrite -k -O gs://ywz-tmp/bigfile.txt
您所阅读的ArrayList<Double> list = new ArrayList();
list.add(parseDouble("7.01"));
list.add(parseDouble("12.01"));
list.add(parseDouble("9.00"));
list.add(parseDouble("8.1"));
值无法与ds.child("read").getValue(String.class).equals(false)
值String
保持一致。
要么进行字符串到字符串比较:
Boolean
首先将字符串转换为布尔值,然后比较:
false
答案 1 :(得分:0)
您的比较应该有效,但您有&#34; true&#34;值作为数据库中的字符串,Firebase支持使用布尔值作为节点的值,因此这应该是您的第一个修复。为此,只需删除数据库中"
值周围的true
,您就可以在Web控制台中对其进行编辑。确保在创建数据时创建为boolean primitive数据类型而不是String。
你的if条件应该是:
if (!ds.child("read").getValue(Boolean.class)){
//work here
}
在上述情况下,使用否定!
来说:如果与true相反,那么......