【问题标题】:how to retrieve sub child values having same names from firebase database?如何从firebase数据库中检索具有相同名称的子子值?
【发布时间】:2020-02-09 09:55:25
【问题描述】:

我的 viewHolder 类

public TextView textAreaName,textAreaTotalCount,textAreaAvailCount;
public itemClickListener listener;
public AreaViewHolder(@NonNull View itemView)
{
    super(itemView);
    textAreaName = itemView.findViewById(R.id.area_area_name);
    textAreaTotalCount = itemView.findViewById(R.id.area_total_count);
    textAreaAvailCount = itemView.findViewById(R.id.area_avail_count);
}

public void setItemClickListener(itemClickListener listener)
{
    this.listener=listener;
}

@Override
public void onClick(View v)
{
    listener.onClick(v,getAdapterPosition(),false);
}

我的模型类

public class ComplexModel {
    private String complex_name,complex_id,area_count,area_id,total_count,available_count,slot;

    public ComplexModel(String complex_name, String complex_id, String area_count, String area_id, String total_count, String available_count, String slot) {
        this.complex_name = complex_name;
        this.complex_id = complex_id;
        this.area_count = area_count;
        this.area_id = area_id;
        this.total_count = total_count;
        this.available_count = available_count;
        this.slot = slot;
    }

    public String getComplex_name() {
        return complex_name;
    }

    public void setComplex_name(String complex_name) {
        this.complex_name = complex_name;
    }

    public String getComplex_id() {
        return complex_id;
    }

    public void setComplex_id(String complex_id) {
        this.complex_id = complex_id;
    }

    public String getArea_count() {
        return area_count;
    }

    public void setArea_count(String area_count) {
        this.area_count = area_count;
    }

    public String getArea_id() {
        return area_id;
    }

    public void setArea_id(String area_id) {
        this.area_id = area_id;
    }

    public String getTotal_count() {
        return total_count;
    }

    public void setTotal_count(String total_count) {
        this.total_count = total_count;
    }

    public String getAvailable_count() {
        return available_count;
    }

    public void setAvailable_count(String available_count) {
        this.available_count = available_count;
    }

    public String getSlot() {
        return slot;
    }

    public void setSlot(String slot) {
        this.slot = slot;
    }

    public ComplexModel() {
    }
}

这是我试图从数据库中获取值的代码

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_park_area);

    complexName = getIntent().getStringExtra("complexname");
    cID = getIntent().getStringExtra("cID");

    reff = FirebaseDatabase.getInstance().getReference().child(cID);

    jAreaList = findViewById(R.id.areaList);
    jAreaList.setLayoutManager(new LinearLayoutManager(this));

    jtv3 = findViewById(R.id.tv3);
    jComplexName = findViewById(R.id.area_complex_name);

    jComplexName.setText(complexName);
}

@Override
protected void onStart()
{
    super.onStart();

    FirebaseRecyclerOptions<ComplexModel> options =
            new FirebaseRecyclerOptions.Builder<ComplexModel>()
            .setQuery(reff.orderByChild("slot"),ComplexModel.class)
            .build();

    FirebaseRecyclerAdapter<ComplexModel,AreaViewHolder> adapter =
            new FirebaseRecyclerAdapter<ComplexModel, AreaViewHolder>(options)
            {
        @Override
        protected void onBindViewHolder(@NonNull AreaViewHolder holder, int i, @NonNull ComplexModel complexModel)
        {
            holder.textAreaName.setText(complexModel.getArea_id());
            holder.textAreaTotalCount.setText(complexModel.getTotal_count());
            holder.textAreaAvailCount.setText(complexModel.getAvailable_count());

            holder.itemView.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    startActivity(new Intent(ParkAreaActivity.this,ReservationActivity.class));
                }
            });
        }

        @NonNull
        @Override
        public AreaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
        {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.area_item_layout,parent,false);
            AreaViewHolder holder = new AreaViewHolder(view);
            return holder;
        }
    };
    jAreaList.setAdapter(adapter);
    adapter.startListening();
}

这是我的 firebase 数据库结构的格式。我想从两个子孩子中检索slot,available_counttotal_count 的值。

我存储在 firebase 数据库中的值的结构

]1

【问题讨论】:

  • 你在代码中尝试过什么吗?
  • 是的先生.. 我尝试使用 firebase 回收器适配器查看此值
  • 请添加您尝试过的代码
  • 我添加了我的代码先生
  • 这段代码中到底有什么不符合您的预期?也请回复@AlexMamo

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

您可以使用这些值作为参数创建一个对象ParkingArea,然后在从数据库中获取时,根据那里的值创建对象,将它们放入将在您的适配器中使用的列表中

一些文档Firebase write / read data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多