尝试在 firebase 上填充列表视图时没有 setter/field

No setter/field for while trying to populate a listview on firebase

我正在尝试从 firebase 检索数据并使用 firebase-ui 将其显示在我的列表视图中。代码运行良好,但列表视图中没有显示任何内容。这是我从日志中得到的:

W/ClassMapper: No setter/field for -KNRXdDOlA9nV6qxXvOl found on class com.example.sammie.coreteccontacts.Sacco

这是我的 FirebaselistAdapter

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference();
FirebaseListAdapter<Sacco> adapter = new FirebaseListAdapter<Sacco>(getActivity(), Sacco.class, android.R.layout.simple_list_item_1, mDatabaseReference) {
 @Override
protected void populateView(View view, Sacco sacco, int i) {
((TextView)view.findViewById(android.R.id.text1)).setText(Sacco.getName());
}
};
contactList.setAdapter(adapter);

这是我的萨科 class:

package com.example.sammie.coreteccontacts;

public class Sacco {

    String description;
    String location;
    static String name;

    public Sacco() {
    }

    public Sacco(String description, String location, String name) {
        this.name = name;
        this.description = description;
        this.location = location;
    }

    public static String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

    public String getLocation() {
        return location;
    }
}

这是来自 firebase 的数据示例

KNRWnG6BTkbGJQJVq9Qaddclose

description:"test description"

location: "test location"

name: "test name"

您的 class 中没有 setter 方法。

public void setName(String name) {
    this.name = name;
}

public void setDescription(String description) {
    this.description = description;
}

public void setLocation(String location) {
    this.location = location;
}

但是

-KNRWnG6BTkbGJQJVq9Qaddclose

这是一个唯一键,将作为包含您的描述、位置和姓名的对象获取。

W/ClassMapper: No setter/field for -KNRXdDOlA9nV6qxXvOl found on class com.example.sammie.coreteccontacts.Sacco

这表明您的数据库侦听器定位有误。它正在读取 -KNRWnG6BTkbGJQJVq9Qaddclose 作为 Sacco class 的变量而不是它的对象。

请检查 JSON 文件和 DatabaseReference。很可能应该是这样的:

  • UnderChilds <-----(儿童听众)。
    • -KNRWnG6BTkbGJQJVq9Qaddclose
    • -KNRWnSYnuojkbGJQJVq9Qaddclos

您必须获得对您​​的节点的引用:

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Your Node Name");