You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用startAt、endAt查询Firebase实时数据库时如何获取DataPelanggan子节点数据

Firebase Realtime Database 获取DataPelanggan子节点调整方案

核心说明

你当前编写的日期范围查询逻辑已经正确命中了Users/Pending节点下所有符合前缀规则的父节点,只需要调整数据模型和适配器的读取逻辑即可拿到子节点DataPelanggan的内容,改动最小的实现方案如下:

步骤1:调整Model实体类结构

新增嵌套的DataPelanggan类,对应数据库里该子节点的所有字段:

public class Model {
    // 保留原有其他需要读取的父节点字段,不需要的可以删除
    private DataPelanggan DataPelanggan; // 字段名必须和数据库里的子节点名完全一致

    // Firebase序列化要求必须保留无参构造方法
    public Model() {}

    // 对应的getter和setter方法
    public DataPelanggan getDataPelanggan() {
        return DataPelanggan;
    }

    public void setDataPelanggan(DataPelanggan dataPelanggan) {
        DataPelanggan = dataPelanggan;
    }

    // 嵌套类对应DataPelanggan子节点下的字段
    public static class DataPelanggan {
        // 替换成你实际的字段名,和数据库完全一致
        private String namaPelanggan;
        private String nomorTelepon;
        private String alamat;

        public DataPelanggan() {}

        // 每个字段对应的getter和setter方法
        public String getNamaPelanggan() {
            return namaPelanggan;
        }

        public void setNamaPelanggan(String namaPelanggan) {
            this.namaPelanggan = namaPelanggan;
        }

        // 其他字段的getter setter以此类推
    }
}

步骤2:调整适配器读取逻辑

在MyAdapter的onBindViewHolder方法中直接读取DataPelanggan的内容即可:

@Override
protected void onBindViewHolder(@NonNull MyAdapter.ViewHolder holder, int position, @NonNull Model model) {
    Model.DataPelanggan data = model.getDataPelanggan();
    // 用读取到的子节点数据给控件赋值
    holder.tvNama.setText(data.getNamaPelanggan());
    holder.tvHp.setText(data.getNomorTelepon());
    // 其他字段赋值以此类推
}

注意事项

如果你不需要读取父节点的其他任何字段,只需要DataPelanggan的内容,也可以直接把Model类的字段全部替换成DataPelanggan下的字段,不需要修改现有查询逻辑,适配成本很低。
实体类的字段名必须和数据库字段名完全匹配,大小写不能错,否则会读取不到数据。

内容的提问来源于stack exchange,提问作者user17562398

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:04