检索时未显示Firebase数据

问题描述 投票:0回答:1

我在尝试从Firebase获取一些数据时遇到问题。我以前做过这个,直到现在都没有问题。我有一个firebase帮助程序,它加载数据然后将其添加到自定义arraylist。现在,数据显示但没有添加到arraylist,我不知道为什么。

  • 做了一些测试,我注意到填充数据的“ListData data = ds.getValue(ListData.class)”无法正常工作。它不会将数据正确设置为ListData类。但我不知道为什么。

以下是从数据库获取数据的代码:

class FirebaseHelper {

// objects
private final DatabaseReference db;
private final ArrayList<ListData> contactData = new ArrayList<>();
private final HomeActivity activity;

// ------------------------------

FirebaseHelper(DatabaseReference db, HomeActivity ac){
    this.db = db;
    this.activity = ac;
}

// ------------------------------

private void fetchData(DataSnapshot dSnap){

    // Clear arraylist
    contactData.clear();

    // Populate with new data
    for(DataSnapshot ds: dSnap.getChildren() ) {

        ListData data = ds.getValue(ListData.class);
        contactData.add(data);

    }

    // TODO: Setup listview and adapter after data has loaded

    ContactAdapter adapter = new ContactAdapter(activity, contactData, activity);
    ListView listView = activity.findViewById(R.id.itemList);
    listView.setAdapter(adapter);

} // end fetchData

// ------------------------------

ArrayList<ListData> retrieve() {

    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    assert user != null;

    db.child("contacts").child(user.getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fetchData(dataSnapshot);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    return contactData;

 } // end retrieve

} // end FirebaseHelper

现在,我获取数据,但不会添加。

enter image description here

而我得到的只是这个空项目清单。

enter image description here

如果需要更多信息,请告诉我。

这是ListData类

 class ListData implements Serializable {

private String contactName;
private String contactNum;
private int contactAge;
private String userId;

ListData(){}

// setter

public void setContactAge(int contactAge) {
    this.contactAge = contactAge;
}

public void setContactName(String contactName) {
    this.contactName = contactName;
}

public void setContactNum(String contactNum) {
    this.contactNum = contactNum;
}

public void setUserId(String userId) {
    this.userId = userId;
}

// getter

String getContactName() {
    return contactName;
}

String getContactNum() {
    return contactNum;
}

int getContactAge() {
    return contactAge;
}

String getUserId() {
    return userId;
 }

} // end ListData
java android firebase firebase-realtime-database
1个回答
0
投票

我明白了。我不确定为什么数据没有发布,即使它在那里。我不知道ListData中的对象(string,int)必须与检索到的数据上的键/值完全相同。一旦我将ListData上的所有名称更改为正确的键值,现在将显示所有数据。

© www.soinside.com 2019 - 2024. All rights reserved.