'[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
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|



