Class java.util.Map has generic type parameters, please use GenericTypeIndicator instead
The error points out correctly where you are going wrong
Map<String, String> map = dataSnapshot.getValue(Map.class);
Map class uses parameter to define the types of Key and Object where as you don't give them and simply use Map.class
which fails.
Try the below code - since Key are always string and we can have any type of Object for them
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
To introduce the GenericTypeIndicator
, you can change this line:
Map<String, String> map = dataSnapshot.getValue(Map.class);
in to this:
GenericTypeIndicator<Map<String, String>> genericTypeIndicator = new GenericTypeIndicator<Map<String, String>>() {};
Map<String, String> map = dataSnapshot.getValue(genericTypeIndicator );
This should work well in your case. Please give it a try and let me know.
I had the same problem and solved it by handling the Object instead trying to have Firebase cast it.
Map <String, String> map = (Map)dataSnapshot.getValue();
did it for me.
You need to use the getCheldrin
as follows
for (DataSnapshot snapshotNode: dataSnapshot.getChildren()) {
map.put(snapshotNode.getKey(), snapshotNode.getValue(YOUR_CLASS_TYPE.class));
}
Replace the YOUR_CLASS_TYPE
with the class type you expecting. notice that this class must have an empty constructor.