我正在尝试从数据库中检索一个字符串,但是每次尝试它都会显示一个错误,提示“无法将java.util.HashMap类型的值转换为String”,Stackoverflow上的一个人遇到了同样的问题,回答对他有所帮助,但仍然对我不起作用
我试图将代码映射为哈希图,但它一直显示错误
这是模型
public ButtonInformationSend(String testoNotifica) {
TestoNotifica = testoNotifica;
}
public String getTestoNotifica() {
return TestoNotifica;
}
public void setTestoNotifica(String TestoNotifica) {
this.TestoNotifica = TestoNotifica;
}
这是代码
myRef.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ButtonInformationSend buttonInformationSend = dataSnapshot.getValue(ButtonInformationSend.class);
creaNotifica(buttonInformationSend);
}
@Override public void onCancelled(@NonNull DatabaseError databaseError) {}
});
我得到的错误是无法将类型java.util.HashMap
的值转换为字符串
答案 0 :(得分:1)
在Java中,您不能将Hashmap直接转换为字符串,因为它们是两种不同的类型。
DataSnaphhot.getValue()
如果您的引用指向数据库中的数据节点,则返回在您的引用处找到的所有数据的哈希图。您需要做的是从数据快照中获取哈希图,然后从该哈希图中获取所需的相关数据,这是一个示例:
HashMap<String, Object> data = (HashMap<String,Object>) dataSnapshot.getValue();
try {
String value1 = (String) data.get("Value1");
String value2 = (String) data.get("Value2");
String value3 = (String) data.get("Value3");
} catch (Exception e) {
e.printStackTrace();
}
希望这会有所帮助。
答案 1 :(得分:1)
如果您有此数据库:
Users
id
name : peter
然后变量myRef
应该引用节点id
以便能够检索到String
,如果myRef
引用根节点,则会得到错误:
无法将类型java.util.HashMap的值转换为String
因此,您应该执行以下操作:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");
ref.child(id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});