0

so I have a recycler view with multiple items, and the date are following the computer system, but when the data is displayed, the order is random.

I want the latest item to be displayed at top. I included my code for the adapter below:

import android.content.Context; import android.content.Intent; 
import android.content.res.ColorStateList; 
import android.graphics.Color;
import android.view.LayoutInflater; import android.view.View;
import android.view.ViewGroup; import android.widget.ImageView; 
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class TransactionAdapter extends  RecyclerView.Adapter<TransactionAdapter.MyViewHolder>{ Context context; ArrayList<TransactionModel> transactionModelArrayList;

public TransactionAdapter(Context context, ArrayList<TransactionModel> transactionModelArrayList) { this.context = context; this.transactionModelArrayList = transactionModelArrayList;
    }

    @NonNull
    @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.retrieve_layout_expense, parent,false); return new MyViewHolder(view);
    }

public void add(TransactionModel transactionModel){ transactionModelArrayList.add(transactionModel); notifyDataSetChanged();
    }

public void clear(){ transactionModelArrayList.clear(); notifyDataSetChanged();
    }

    @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { TransactionModel model = transactionModelArrayList.get(position); String priority = model.getType();

if(priority.equalsIgnoreCase("Expense")){ holder.amount.setTextColor(0xAAEE0000); holder.item.setText("Category: " + model.getExpenseCategory());

        }else if(priority.equalsIgnoreCase("Income")){ holder.amount.setTextColor(0xAA138600); holder.item.setText("Category: " + model.getIncomeCategory());
        } holder.amount.setText("RM " + model.getAmount()); holder.date.setText("Date: " + model.getTime()); holder.note.setText("Note: " + model.getNote()); holder.wallet.setText("Wallet: " + model.getWalletCategory());

        //to update holder.priority.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View view) { Intent intent = new Intent(context, UpdateTransActivity.class); intent.putExtra("id", transactionModelArrayList.get(position).getExpenseId()); intent.putExtra("amount", transactionModelArrayList.get(position).getAmount()); intent.putExtra("note", transactionModelArrayList.get(position).getNote()); intent.putExtra("type", transactionModelArrayList.get(position).getType()); intent.putExtra("wallet", transactionModelArrayList.get(position).getWalletCategory());

context.startActivity(intent);
            }
        });
    }

    @Override public int getItemCount() { return transactionModelArrayList.size();
    }

public class MyViewHolder extends RecyclerView.ViewHolder{ TextView note,wallet,amount,item,date; ImageView itemIV; View priority; public MyViewHolder(@NonNull View itemView){ super(itemView); note = itemView.findViewById(R.id.note); item = itemView.findViewById(R.id.item); wallet = itemView.findViewById(R.id.wallet); amount = itemView.findViewById(R.id.amount); date = itemView.findViewById(R.id.date); itemIV = itemView.findViewById(R.id.itemIV); priority = itemView.findViewById(R.id.priority);
        }
    } } 

I followed others' code, but they all don't have the specific code to sort the items by date

homuhomy
  • 13
  • 2

0 Answers0