从firebase检索的数据与预期的数据不同

时间:2018-02-21 17:50:33

标签: android firebase-realtime-database

databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            myList.clear();
            Iterable<DataSnapshot> children = dataSnapshot.getChildren();
            try{
                for(DataSnapshot child : children){
                    History_Date history_date = child.getValue(History_Date.class);

                    myList.add(history_date);
                ArrayAdapter<History_Date> adapter = new ArrayAdapter<History_Date>(getActivity(), android.R.layout.simple_list_item_1, myList);
                historyListView.setAdapter(adapter);
            }catch(Exception e){
                e.printStackTrace();
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我可以从android中的firebase中检索到正确的数据,但它在页面中显示错误的数据。它显示的是com.example.XXXX.XXX@7ae91f2,com.example.XXXX.XXX@7bc91f2。这有什么问题?

P.S。我正在使用这个类的片段,它有一个布局xml文件,它只有ListView。

2 个答案:

答案 0 :(得分:1)

您正在向History_Date

添加ArrayAdapter个对象
myList.add(history_date);

根据文件:

  

默认情况下,数组适配器通过调用toString()

来创建视图

因此,在getView()期间,Android可能会尝试通过history_date.toString()获取文字,如果您没有覆盖该方法,Android会返回您提到的文字:com.example.XXXX.XXX@7ae91f2

修复

History_Date课程中添加以下方法:

public class History_Date {
    ...
    @Override
    public String toString() {
        return date;
    }

}

答案 1 :(得分:0)

public class History_Date {
String date;

public History_Date(String date) {
    this.date = date;
}

public History_Date(){

}

public String getDate() {
    return date;
}

你的意思是这个数据库结构?对不起,我是这个新手