如何根据Spinner的选择从Firestore中检索数据,然后计算在TextView中显示的总成本
ID和日期范围(ex:April)获取Firestore的所有数据,并获取每行总成本
任何人都可以帮助以下我的代码,基本上我想根据特定月份的用户 类如下所示:
@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) {
}
};
我已附上下面的图像,这些图像从firestore
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("quot; + 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论