我目前正在学习firebase及其实现,尤其是firebaselistadapter。我似乎无法找到有效的更新示例。据我所知,它像大多数适配器一样工作。你需要一个视图模型和一个引用来绑定模型,并添加你需要推入相同的引用。我已经使用firebase.child完成了自定义适配器,它可以工作,但是当我尝试在firebaselistadapter中使用它时。它没有显示任何东西加上populateview没有被调用,甚至也没有调用onerror。
我的代码
FirebaseChatMessage - Custom class as model
public FirebaseChatMessage(String messageText, String messageUser) {
this.messageText = messageText;
this.messageUser = messageUser;
this.messageTime = new Date().getTime();
}
FirebaseSample.java - Activity
reference = FirebaseDatabase.getInstance().getReference().child("messages");
public void displayChat()
{
FirebaseListOptions<FirebaseChatMessage> options =
new FirebaseListOptions.Builder<FirebaseChatMessage>()
.setQuery(reference, FirebaseChatMessage.class)
.setLayout(R.layout.firebase_message)
.build();
FirebaseListAdapter<FirebaseChatMessage> adapter =
new FirebaseListAdapter<FirebaseChatMessage>(options) {
@Override
protected void populateView(View v, FirebaseChatMessage model, int position) {
Log.d(" Populating ", model.getMessageText());
TextView messageText = (TextView)v.findViewById(R.id.message_text);
TextView messageUser = (TextView)v.findViewById(R.id.message_user);
TextView messageTime = (TextView)v.findViewById(R.id.message_time);
// Set their text
messageText.setText(model.getMessageText());
messageUser.setText(model.getMessageUser());
messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
model.getMessageTime()));
}
@Override
public void onError(DatabaseError error) {
Log.d(" Error ", error.getDetails().toString());
}
};
}
这一个工作(addValueEventListener)的意思是我能够迭代孩子并将其作为firebasechatmessage返回
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int n = 0;
for(DataSnapshot child : dataSnapshot.getChildren()) {
FirebaseChatMessage firebaseChatMessage = child.getValue(FirebaseChatMessage.class);
Log.d(" Message ", firebaseChatMessage.getMessageText());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如果有人能提供帮助,我们将非常感激
我也尝试过查看firebase自己的例子,但他们扩展了视图,现在我只想拥有一个默认的基本示例。 link