未能将java.util.HashMap类型的值转换为字符串。将字符串转换为映射
下面是我的代码。我收到以下错误“com.google.firebase.database.DatabaseException:未能将java.util.HashMap类型的值转换为字符串”。请帮忙未能将java.util.HashMap类型的值转换为字符串。将字符串转换为映射,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,下面是我的代码。我收到以下错误“com.google.firebase.database.DatabaseException:未能将java.util.HashMap类型的值转换为字符串”。请帮忙 du = FirebaseDatabase.getInstance().getReference().child("storename"); du.keepSynced(true); du.addListenerForSingleValueEvent(new Va
du = FirebaseDatabase.getInstance().getReference().child("storename");
du.keepSynced(true);
du.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<Map<String, String>> genericTypeIndicator = new GenericTypeIndicator<Map<String, String>>() {
};
Map<String, String> map = dataSnapshot.getValue(genericTypeIndicator);
name.setText(map.get("ownerName"));
storename.setText(map.get("compName"));
storeaddr.setText(map.get("address"));
ph1.setText("Ph: " + map.get("phoneNumber"));
gst.setText(map.get("gstNum"));
}
@Override
public void onCancelled(DatabaseError error) {
}
});
du=FirebaseDatabase.getInstance().getReference().child(“storename”);
保持同步(正确);
du.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
GenericTypeIndicator GenericTypeIndicator=新的GenericTypeIndicator(){
};
Map Map=dataSnapshot.getValue(genericTypeIndicator);
name.setText(map.get(“ownerName”);
storename.setText(map.get(“compName”);
storeaddr.setText(map.get(“地址”);
ph1.setText(“Ph:+map.get(“phoneNumber”);
gst.setText(map.get(“gstNum”);
}
@凌驾
已取消的公共无效(DatabaseError错误){
}
});
您正在从
/storename
加载所有数据。因为下面可能有多个存储,所以您需要遍历dataSnapshot.getChildren()
以访问每个存储
因此:
du=FirebaseDatabase.getInstance().getReference().child(“storename”);
保持同步(正确);
du.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共无效onDataChange(数据快照快照){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
GenericTypeIndicator GenericTypeIndicator=新的GenericTypeIndicator(){
};
Map Map=dataSnapshot.getValue(genericTypeIndicator);
name.setText(map.get(“ownerName”);
storename.setText(map.get(“compName”);
storeaddr.setText(map.get(“地址”);
ph1.setText(“Ph:+map.get(“phoneNumber”);
gst.setText(map.get(“gstNum”);
}
}
@凌驾
已取消的公共无效(DatabaseError错误){
抛出错误。toException();//永远不要忽略错误
}
});
您应该订阅一个存储,而不是订阅包含所有存储的父节点。您应该在其中循环,以获得HashMap列表
du = FirebaseDatabase.getInstance().getReference().child("storename");
du.keepSynced(true);
du.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
GenericTypeIndicator<Map<String, String>> genericTypeIndicator = new GenericTypeIndicator<Map<String, String>>() {
};
Map<String, String> map = dataSnapshot.getValue(genericTypeIndicator);
name.setText(map.get("ownerName"));
storename.setText(map.get("compName"));
storeaddr.setText(map.get("address"));
ph1.setText("Ph: " + map.get("phoneNumber"));
gst.setText(map.get("gstNum"));
}
}
@Override
public void onCancelled(DatabaseError error) {
throw error.toException(); // never ignore errors
}
});