Reputation: 479
I want to print some data after getting from the DataSnapShot
object. For printing it, I am doing in this way;
private void getUpdates(DataSnapshot DS){
for(DataSnapshot mydata:DS.getChildren()){
Log.i("", String.valueOf(data));
}
}
and making firebase
instance as;
FirebaseDatabase database = FirebaseDatabase.getInstance();
myRef = database.getReference("myDB");
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
getUpdates(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
getUpdates(dataSnapshot);
}
Printing as:
DataSnapshot { key = areaName, value = myName1}
DataSnapshot { key = decs, value = desc1}
DataSnapshot { key = areaName, value = myName2 }
DataSnapshot { key = desc, value = desc2 }
But I want to get only desc
values.
My Model class is:
public class Singleton {
private String areaName;
private String desc;
public Singleton(String areaName, String desc) {
this.areaName = areaName;
this.desc = desc;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
I tried in this way;
String decsrip= (String) mydata.child("desc").getValue();
Log.i("", decsrip);
But it is printing
null
Then I tried as
Map<String, Object> map = (Map<String, Object>) mydata.getValue();
String descrip = (String) map.get("desc");
Log.i("",descrip );
The application crashed by saying
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
Where the data is? Can I get the value of desc
only?
Upvotes: 0
Views: 8151
Reputation: 1500
Only thing you need to do is that
FirebaseDatabase database = FirebaseDatabase.getInstance();
myRef = database.getReference("myDB");
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Singleton data = dataSnapshot.getValue(Singleton.class);
Log.i("", String.valueOf(data.getDesc()));
}
...
}
You also need to add an empty constructor to your Singleton
model.
public class Singleton {
private String areaName;
private String desc;
public Singleton() {
}
public Singleton(String areaName, String desc) {
this.areaName = areaName;
this.desc = desc;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
Upvotes: 3