I need to count the number of item where the attribute is equal to some String value in Firebase. May I know how the way to count it?
The way i did it, it keeps appear Index out of Bound, size:0 .
I want to count something like how many data in my table is equal to "normal" or "mild" or other word. For example, in the picture , there is two normal, hence, it should returns 2.
Thank you :)
Main Activity .class
public class MainActivity extends AppCompatActivity {
RecyclerView rv;
TextView title;
DatabaseReference databaseReference;
MyRecyclerViewPer adapter;
ArrayList<Integer > nu;
int r=0;
ArrayList<Integer> one;
ArrayList<Integer> two;
ArrayList<Integer> three;
ArrayList<Integer> four;
Integer wow;
int amild = 0,dmmild=0,dm=0,dpmild=0,smild=0;
int amod = 0,dpmod=0,smod=0;
int asev = 0,dpsev=0,dpvsev=0,ssev=0,svsev=0;
int anor = 0,bnor=0,bpositive=0,dmnor=0,dpnor=0,snor=0;
double per=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hori);
title = findViewById(R.id.name);
title.setText("Statistical Report");
rv = findViewById(R.id.myRecycle);
rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
nu = new ArrayList<Integer>();
one = new ArrayList<Integer>();
two= new ArrayList<Integer>();
three= new ArrayList<Integer>();
four= new ArrayList<Integer>();
final DatabaseReference rootRef= FirebaseDatabase.getInstance().getReference();
databaseReference= rootRef.child("assess");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//anxiety result
if(dataSnapshot.child("anx").exists()){
for (DataSnapshot dataSnapshot1 : dataSnapshot.child("anxiety").getChildren()) {
wow= (int)dataSnapshot1.getChildrenCount();
nu.add(wow);
String key =dataSnapshot1.getKey();
DatabaseReference userRef = rootRef.child("assess").child("anx").child(key);
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot2) {
for (DataSnapshot d : dataSnapshot2.getChildren()) {
//how many row equal to mild condition
if (d.getValue(AssessmentResult.class).getCon().equals("Mild")) {
amild++;
}
//how many row equal to moderate condition
else if (d.getValue(AssessmentResult.class).getCon().equals("Moderate")) {
amod++;
}
//how many row equal to severe condition
else if (d.getValue(AssessmentResult.class).getCon().equals("Severe")) {
asev++;
}
//how many row equal to normal condition
else if(d.getValue(AssessmentResult.class).getCon().equals("Normal")){
anor++;
}
}
if(amild==0){
one.add(0);
}else{
one.add(anor);
}
if(amild==0){
two.add(0);
}else{
two.add(amild);
}
if(amod==0){
three.add(0);
}else{
three.add(amod);
}
if(asev==0){
four.add(0);
}else{
four.add(asev);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "Oh no!", Toast.LENGTH_SHORT).show();
}
});
}
}
else{
nu.add(0);
}
adapter = new MyRecyclerView(MainActivity.this, nu,one,two,three,four,five);
rv.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}