这是我的数据,我想使用addValueEventListener检索它,但不幸的是我的应用程序停止了
@Override
public void onStart() {
super.onStart();
db.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List.clear();
for(DataSnapshot dSnapshot :dataSnapshot.getChildren()){
List<String> td = (ArrayList<String>) dataSnapshot.getValue();
// data data1=dSnapshot.getValue(data.class);
List.add(data1);
}
DataList adapter =new DataList(Fragment1.this.getActivity(),List);
list.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
由于此行代码,我的应用已停止,请告诉我其他选择。
//**data data1=dSnapshot.getValue(data.class);
List.add(data1);)
答案 0 :(得分:1)
假设您的db
变量指出了正确的引用。
代替使用
ValueEventListener
并遍历每个孩子。 使用ChildEventListener
并确保DatabaseReference
指向孩子所居住的根,以便我们可以遍历每个POJO。
db.addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
list.add(dataSnapshot.getValue(YourModel.class)); // Change with your POJO
// Add to your list
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
public void onCancelled(DatabaseError er) { }});
如果要在实时数据库中检索泛型,请使用 Firebase的抽象类GenericTypeIndicator
GenericTypeIndicator<List<Message>> t = new GenericTypeIndicator<List<Message>>() {};
List<Message> messages = snapshot.getValue(t);
答案 1 :(得分:0)
use this method
//-----------------// data inside kids----------
private void getDataFrom() {
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference mCustomerDatabase = FirebaseDatabase.getInstance().getReference().child("users").child("kids");
mCustomerDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists() && dataSnapshot.getChildrenCount() > 0) {
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
if (map.get("kid1ID") != null) {
customer_name = map.get("title").toString();
Log.i("kid1ID",String.valueOf(kid1ID));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}