问题是DataSnapShot
缺少无参数构造函数,因此您不能像这样直接使用它。
改用其他模型类。
像这样 :
创建您自己的模型,称为FriendlyMessage
:
public class FriendlyMessage {
private String text;
private String name;
// Created constructor with no Arguments
public FriendlyMessage() {
}
public FriendlyMessage(String text, String name) {
this.text = text;
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
最重要的是我们创建了没有参数
的构造函数DataSnapShot
注意:上面的模型类只是你的一个例子,因为你是 firebase 的新手。您可以拥有自己的模型类,其中包含您自己的参数类型和所有。
像这样将它用于您的 Firebase Recyclerview :
FirebaseRecyclerAdapter mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage, MyHolder>(
FriendlyMessage.class,
R.layout.row_slots,
MyHolder.class,
databaseReference.child("slots").child(uid).child(dayOfWeek).child("time")) {
@Override
protected void populateViewHolder(MyHolder viewHolder, FriendlyMessage friendlyMessage, int position)
{
}
};
编辑 :
您如何将数据推送到数据库也很重要。直接用你的模型类来做。
例如对于上述模型FriendlyMessage
推它是这样的:
FriendlyMessage friendlyMessage = new FriendlyMessage("message", "Username");
databaseReference.child(MESSAGES_CHILD).push().setValue(friendlyMessage);
在这里,您child()
将与我的实现有所不同,这只是一个示例。
对于收听特定的 DataSnapShot :
databaseReference.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
//The PUSH ID OP WANTED
System.out.println("Push Id ---"+postSnapshot.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
})
解释上面的监听器。它将DataSnapShot
为您的每个属于您的孩子“用户”的用户提供对象。您可以通过方法访问 Push id 。getKey()