FirebaseListAdapter为空

时间:2017-11-13 15:03:19

标签: android firebase firebase-realtime-database firebaseui

我目前正在学习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

0 个答案:

没有答案