android - 无法从 Firebase 读取

标签 android firebase firebase-realtime-database

我正在编写一个程序,其中需要来自 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 层次结构是这样的:

enter image description here

最佳答案

我仍然需要包含 R.id.msg_bodyR.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/

相关文章:

firebase如何仅部署express()应用程序的特定功能

android - 限制 Firebase 数据库访问一个 Android 应用程序

java - 在列表中添加来自 firebase 的对象的问题

android - Android Firebase 作业调度程序会通过更改日期时间触发吗?

java - 来自 Java 的 Firebase 云消息传递无法将通知发送到其他设备

javascript - 如何在 JavaScript 中存储 Firebase 数据库值?

android - 我应该添加相同的工具 :context code to each XML size file in Android Studio?

android - string.xml 解析错误

java - 如何选择正确的方式来获取Java中的相关上下文?

Android:在ListView的onItemClickListener()中获取TextView