在Java中不使用模式类的情况下,从实时firebase创建列表

在Java中不使用模式类的情况下,从实时firebase创建列表,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我坚持了一点,请帮我解决这个问题,我需要将cateModelList以所需格式发送到适配器,格式包括参数1)字符串类型链接2)字符串类型类别名称 我从firebase获得了数据,我不知道如何将这些数据格式化到for循环中所需的列表中。请帮助我 List<CategoryModel> categoryModelList = new ArrayList<CategoryModel>(); FirebaseDatabase database = FirebaseDatabas

我坚持了一点,请帮我解决这个问题,我需要将cateModelList以所需格式发送到适配器,格式包括参数1)字符串类型链接2)字符串类型类别名称

我从firebase获得了数据,我不知道如何将这些数据格式化到for循环中所需的列表中。请帮助我

List<CategoryModel> categoryModelList = new ArrayList<CategoryModel>();

FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference databaseReference = database.getReference("categories");

        // Read from the database
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot data:dataSnapshot.getChildren()){

                    categoryModelList.add(new CategoryModel(data.child().getValue("img"), data.child().getValue("name")))
                }

            }

            @Override
            public void onCancelled(DatabaseError error) {}
        });
firebase数据库结构

需要的产出

List<CategoryModel> categoryModelList = new ArrayList<CategoryModel>();
        categoryModelList.add(new CategoryModel("link","Home"));
        categoryModelList.add(new CategoryModel("link","Electronics"));
        categoryModelList.add(new CategoryModel("link","Essentials"));
        categoryModelList.add(new CategoryModel("link","Grocery"));
        categoryModelList.add(new CategoryModel("link","Mobile"));
        categoryModelList.add(new CategoryModel("link","Fashion"));
        categoryModelList.add(new CategoryModel("link","Beauty"));
        categoryModelList.add(new CategoryModel("link","Appliances"));
        categoryModelList.add(new CategoryModel("link","Toys & Baby"));
        categoryModelList.add(new CategoryModel("link","Flight"));
        categoryModelList.add(new CategoryModel("link","Sports"));
List categoryModelList=new ArrayList();
添加(新的CategoryModel(“链接”、“主页”);
添加(新的CategoryModel(“链接”、“电子”));
添加(新的CategoryModel(“链接”、“要素”);
添加(新的CategoryModel(“链接”、“杂货店”);
添加(新的CategoryModel(“链接”、“移动”);
添加(新的CategoryModel(“链接”、“时尚”);
添加(新的CategoryModel(“链接”、“美丽”);
添加(新的CategoryModel(“链接”、“设备”);
添加(新的CategoryModel(“链接”、“玩具和婴儿”);
添加(新的CategoryModel(“链接”、“航班”);
添加(新的CategoryModel(“链接”、“运动”);
伙计们,请帮助我,我不明白如何从这些数据中获取此类列表

Java类中的属性(字段和getter/setter)名称与数据库中的名称不匹配。可以使用Java注释将类显式映射到数据库:

public class CategoryModel {
    private String categoryIconLink;
    private String categoryName;

    public CategoryModel() { }

    public CategoryModel(String categoryIconLink, String categoryName) {
        this.categoryIconLink = categoryIconLink;
        this.categoryName = categoryName;
    }

    @PropertyName("img")
    public String getCategoryIconLink() {
        return categoryIconLink;
    }

    @PropertyName("name")
    public String getCategoryName() {
        return categoryName;
    }

    @PropertyName("img")
    public void setCategoryIconLink(String categoryIconLink) {
        this.categoryIconLink = categoryIconLink;
    }

    @PropertyName("name")
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
}
您还需要一个无参数构造函数,否则Firebase不知道如何实例化您的类。这就是我添加的
公共CategoryModel(){}

public class CategoryModel {
    private String categoryIconLink;
    private String categoryName;

    public CategoryModel() { }

    public CategoryModel(String categoryIconLink, String categoryName) {
        this.categoryIconLink = categoryIconLink;
        this.categoryName = categoryName;
    }

    @PropertyName("img")
    public String getCategoryIconLink() {
        return categoryIconLink;
    }

    @PropertyName("name")
    public String getCategoryName() {
        return categoryName;
    }

    @PropertyName("img")
    public void setCategoryIconLink(String categoryIconLink) {
        this.categoryIconLink = categoryIconLink;
    }

    @PropertyName("name")
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
}