Dha*_*val 1 android firebase firebaseui
我正在我的应用程序中实现Firebase Recyclerview UI.我已经实现了一个recyclerview适配器,它向我显示以下异常.以下是我的适配器代码:
FirebaseRecyclerAdapter<DataSnapshot, MyHolder> recyclerAdapter = new FirebaseRecyclerAdapter<DataSnapshot, MyHolder>(
DataSnapshot.class,
R.layout.row_slots,
MyHolder.class,
databaseReference.child("slots").child(uid).child(dayOfWeek).child("time")
) {
@Override
protected void populateViewHolder(MyHolder viewHolder, DataSnapshot model, int position) {
System.out.println("Key : "+model.getKey());
}
};
Run Code Online (Sandbox Code Playgroud)
如何使用FirebaseRecyclerAdapter获取快照值?
问题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;
}
}
Run Code Online (Sandbox Code Playgroud)
最重要的事情,我们已经创建了构造不带任何参数 ,其在失踪
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)
{
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:
您在数据库中推送数据的方式也很重要.直接使用您的模型类.
例如对于上面的模型FriendlyMessage推送它像这样:
FriendlyMessage friendlyMessage = new FriendlyMessage("message", "Username");
databaseReference.child(MESSAGES_CHILD).push().setValue(friendlyMessage);
Run Code Online (Sandbox Code Playgroud)
在这里,您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) {
}
})
Run Code Online (Sandbox Code Playgroud)
解释上面的听众.它会为您的
DataSnapShot孩子"用户"中的每个用户提供对象.您可以通过getKey()方法访问Push id .
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |