Como contar o valor criança única no banco de dados firebase? (Por favor, veja a imagem, obrigado)

Prasath:

digite descrição da imagem aquidigite descrição da imagem aqui

Eu criei uma aplicação android nesta aplicação, eu quero contar o valor criança único.

Eu criei loop for dentro da referência de banco de dados e variável global de atribuição, mas a coisa é que eu não sei quantos valores únicos ficará ao meu cálculo (quantas variáveis).

dbcloud.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
    {
        Modelfortotalsoldcount mc=dataSnapshot1.getValue(Modelfortotalsoldcount.class);
        String name=mc.getFoodname();
        String qty=mc.getFoodqty();
        String price=mc.getFoodprice();
        int totalcount=0;
        if(fname.equals(name))
        {
            String fgname=name;
            String fgprice=price;
            Integer intqty=Integer.valueOf(qty);
            totalcount=totalcount+intqty;
            String totalval=String.valueOf(totalcount);
        }
    }
  }
  @Override
  public void onCancelled(@NonNull DatabaseError databaseError) {
Alex Mamo:

Assumindo que todos os objetos são filhos diretos de sua raiz Firebase, para resolver isso, use a seguinte consulta:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.orderByChild("foodname").equalTo("Burger");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int count = 0;
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String foodqty = ds.child("foodqty").getValue(String.class);
            count = count + Integer.valueOf(foodqty);

        }
        Log.d(TAG, "count:" + count);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);

O resultado na logcat será:

count: 4

Editar:

Se você não sabe o nome de comida, então você deve usar uma variável em vez disso:

Query query = rootRef.orderByChild("foodname").equalTo(foodName);

Em que o foodName é o que o usuário digita em um EditText, por exemplo:

String foodName = foodNameEditText.getText().toString();

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=335243&siteId=1
Recomendado
Clasificación