'[Resolved]How to retrieve data from firestore based on selection from spinner then calculate total cost to be displayed in textView

Anyone can help please with below my code ,Basically I want to fetch all data from firestore based on UserID and date range for specific month (ex: April) and get total cost for each row which will display in textView (id=spent)

my class as below:

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


    fAuth = FirebaseAuth.getInstance();
    fStore = FirebaseFirestore.getInstance();
    userId = fAuth.getCurrentUser().getUid();
    spent = (TextView) findViewById(R.id.spent);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(expense_view.this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.month));
    myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(myAdapter);

    spinner2.setOnItemSelectedListener(onItemSelectedListener1);
    }
 final AdapterView.OnItemSelectedListener onItemSelectedListener1 =
        new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                                       int position, long id) {
//                 String s1 = String.valueOf(position);
////                    textView1.setText(s1);
                    System.out.println("positionss" + spinner2.getSelectedItem());
                if (spinner2.getSelectedItem().equals("April")) {
                    fStore.collection("data").whereEqualTo("ID", userId).whereGreaterThanOrEqualTo("date", "01/4/2022").whereLessThanOrEqualTo("date", "31/4/2022").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                            if (task.isSuccessful()) {
                                System.out.println("TEST"+task.getResult());
                                for (QueryDocumentSnapshot document : task.getResult()) {
                                    String itemCost = document.getString("cost");

                                    String selected = itemCost.get(position).toString();
                                    Log.e("Clicked:",""+selected);


                                    total[0] += Integer.parseInt(itemCost);
                                    System.out.println("here2"+String.valueOf(total[0]));
                                    spent.setText("$" + total[0]);
                                    Log.d(TAG, document.getId() + " => " + document.getData());
                                }
                            } else {
                                Log.d(TAG, "Error getting documents: ", task.getException());
                            }
                        }

                    });

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }

        };

I have attached below images which demonstrate my data from firestore

enter image description here

enter image description here

enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source