Как получить дочерние значения с одинаковыми именами из базы данных Firebase? - PullRequest
1 голос
/ 09 февраля 2020

мой класс 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_count и total_count из обоих дочерних элементов.

моя структура значений хранится в базе данных firebase

![enter image description here] 1

1 Ответ

0 голосов
/ 09 февраля 2020

Вы можете создать объект ParkingArea с этими значениями в качестве параметров, а затем при извлечении из базы данных создать объекты на основе значений из этого списка, поместить их в список, который будет использоваться в вашем адаптере

Некоторые документы Firebase записи / чтения данных

...