我正在编写一个程序,其中需要来自 firebase 的值,这些值已完美插入,但我无法读取它。下面是我读取数据的方法。请建议我哪里出错了。
private void displayChatMessage()
{
ListView listOfMessage = (ListView) findViewById(R.id.listview);
adapter = new FirebaseListAdapter<ChatMessage>(MainActivity.this, ChatMessage.class, R.layout.list_item, FirebaseDatabase.getInstance().getReference()) {
@Override
protected void populateView(final View v, final ChatMessage model, final int position)
{
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("mychatapp-409f8").child("data");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ChatMessage model = dataSnapshot.getValue(ChatMessage.class);
TextView messageText, messageUser, messageTime;
messageText = (TextView) v.findViewById(R.id.msg_body);
messageUser = (TextView) v.findViewById(R.id.msg_user);
messageTime = (TextView) v.findViewById(R.id.msg_time);
messageText.setText(model.getmsgbody);
messageUser.setText(model.getUname());
messageTime.setText(DateFormat.format("dd-MM-yyyy(hh:mm a)", model.getMtime()));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
listOfMessage.setAdapter(adapter);
}
And my demo class is
public class ChatMessage
{
public String user;
public long mtime;
public String msgbody;
public String uname;
public ChatMessage(String user, String msgbody,String name)
{
this.user = user;
this.msgbody = msgbody;
this.uname = name;
mtime = new Date().getTime();
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public ChatMessage() {
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public long getMtime() {
return mtime;
}
public void setMtime(long mtime) {
this.mtime = mtime;
}
public String getMsgbody() {
return msgbody;
}
public void setMsgbody(String msgbody) {
this.msgbody = msgbody;
}
}
我的 firebase 层次结构是这样的:
最佳答案
我仍然需要包含 R.id.msg_body
、R.id.msg_user
等的布局 xml 文件的名称。但是如果我们考虑布局名称是R.layout.your_layout
,那么你的代码应该是这样的:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("data");
adapter = new FirebaseListAdapter<ChatMessage>(MainActivity.this, ChatMessage.class, R.layout.your_layout, ref) {
@Override
protected void populateView(final View v, final ChatMessage model, final int position) {
TextView messageText, messageUser, messageTime;
messageText = (TextView) v.findViewById(R.id.msg_body);
messageUser = (TextView) v.findViewById(R.id.msg_user);
messageTime = (TextView) v.findViewById(R.id.msg_time);
messageText.setText(model.getmsgbody);
messageUser.setText(model.getUname());
messageTime.setText(DateFormat.format("dd-MM-yyyy(hh:mm a)", model.getMtime()));
}
};
listOfMessage.setAdapter(adapter);
希望对你有帮助
Note: This is just a wild guess, I want to write it in comment because I'm not sure it will work, but I think comment field is not enough
关于android - 无法从 Firebase 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919977/