This is the result of RecyclerView:
Firestore database schema:
this is the code I am using. This only retrieve data like in a image
db.collection("Expenses")
.whereEqualTo("Email",email)
.whereGreaterThanOrEqualTo("Date",MonthFirstDate)
.whereLessThanOrEqualTo("Date",TodayDate)
.orderBy("Date")
.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (!queryDocumentSnapshots.isEmpty()){
expensesArrayList.clear();
List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
for (DocumentSnapshot ds : list){
expenses expenses = ds.toObject(expenses.class);
expensesArrayList.add(expenses);
}
adapter.notifyDataSetChanged();
}
}
})
recyclerview Adapter code
import java.util.ArrayList;
public class expensesAdapter extends RecyclerView.Adapter<expensesAdapter.expHolder> {
private ArrayList<expenses> expensesArrayList;
private Context context;
public expensesAdapter(ArrayList<expenses> expensesArrayList, Context context) {
this.expensesArrayList = expensesArrayList;
this.context = context;
}
@NonNull
@Override
public expensesAdapter.expHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.expensesitems,parent,false);
return new expHolder(v);
}
@Override
public void onBindViewHolder(@NonNull expensesAdapter.expHolder holder, int position) {
expenses expenses = expensesArrayList.get(position);
holder.catName.setText(expenses.getCategory());
holder.catAmont.setText(expenses.getAmount());
}
@Override
public int getItemCount() {
return expensesArrayList.size();
}
class expHolder extends RecyclerView.ViewHolder {
private final TextView catName,catAmont;
public expHolder(@NonNull View itemView) {
super(itemView);
catName = itemView.findViewById(R.id.expCategory);
catAmont =itemView.findViewById(R.id.expAmount);
}
}
}
This is the expenses class
public class expenses {
String Category;
String Date;
String Email;
String Amount;
String Description;
String expID;
public expenses(String category, String date, String email, String amount, String description, String expID) {
Category = category;
Date = date;
Email = email;
Amount = amount;
Description = description;
this.expID = expID;
}
public expenses(){}
public String getCategory() {
return Category;
}
public void setCategory(String category) {
Category = category;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getAmount() {
return Amount;
}
public void setAmount(String amount) {
Amount = amount;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getExpID() {
return expID;
}
public void setExpID(String expID) {
this.expID = expID;
}
}
But i need this kind of result:
I want a category wise Sum amount on recyclerview. In my code its only showing separately.
Please gys help me for figure this out!