如何从Firebase数据库获取数据并在ListView中填充它们

时间:2017-07-21 15:54:04

标签: java android android-layout listview

{
  "chat_room" : {
    "-Kp_ldAz7_g3W4riNkJY" : {
      "message" : "Hello!",
      "uname" : "Praveen"
    }
  }
}

这是我的单个聊天消息的Firebase DB jSON文件,我尝试了以下创建的方法,名为" appendChat()"在ListView上填充数据库。

但由于某种原因,ListView仅显示最后发送的消息

    private void appendChat(DataSnapshot dataSnapshot) {
            final ArrayList<String> chatListArr = new ArrayList<String>();
            Iterator i = dataSnapshot.getChildren().iterator();
            while (i.hasNext()) {
                chatListArr.add((String) ((DataSnapshot) i.next()).getValue());
                chatListArr.add((String) ((DataSnapshot) i.next()).getValue());

           }
            ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity().getApplicationContext(), android.R.layout.simple_list_item_2,android.R.id.text1, chatListArr);
            chatList.setAdapter(arrayAdapter);
}

我的ListView有一个用于用户名的字符串和一个消息的子字符串,我如何更改代码以检索数据库值并在ListView中填充为

username:
   message

1 个答案:

答案 0 :(得分:2)

问题是,每次收到邮件时,您都会创建一个全新的ArrayAdapter。这有效地删除了所有先前的消息。我建议您在ArrayAdapter中创建一次onCreate()。然后,您只需将数据添加到ArrayList并在适配器上调用notifyDataSetChanged()