как создать программу повторного просмотра с несколькими типами просмотра. я пытался с моим кодом, но этот метод на самом деле не работает.
я получил мой код из этой ссылки https://stackoverflow.com/a/26245463/12192293
Как правильно создать несколько типов представленияна переработку?
код адаптера:
private static final int THIS_DATE = 0;
private static final int THIS_DATA = 1;
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == THIS_DATE){
return new DateViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_money_manager_date, parent, false));
}else{
return new DataViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_money_manager, parent, false));
}
}
@SuppressLint({"SetTextI18n", "ResourceType"})
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
final MoneyManager moneyManager = moneyManagers.get(position);
Resources resources = context.getResources();
getCurrentBalance();
getTotalIncome();
if (getItemViewType(position) == THIS_DATE){
DateViewHolder dateViewHolder = (DateViewHolder) holder;
dateViewHolder.textDate.setText(moneyManager.getDate());
}else{
DataViewHolder dataViewHolder = (DataViewHolder) holder;
dataViewHolder.textName.setText(moneyManager.getName());
if (moneyManager.getExpense() != 0){
dataViewHolder.textMoney.setText(NumberFormat.getCurrencyInstance(new Locale("id", "id")).format(moneyManager.getExpense()));
dataViewHolder.textMoney.setTextColor(resources.getColor(R.color.colorExpense));
}else{
dataViewHolder.textMoney.setText(NumberFormat.getCurrencyInstance(new Locale("id", "id")).format(moneyManager.getIncome()));
dataViewHolder.textMoney.setTextColor(resources.getColor(R.color.colorIncome));
}
}
}
private void getTotalIncome() {
long totalIncome = 0;
for (MoneyManager moneyManager : moneyManagers){
totalIncome += moneyManager.getIncome();
}
moneyManagerFragment.textTotalIncome.setText(NumberFormat.getCurrencyInstance(new Locale("id","id")).format(totalIncome));
}
private void getCurrentBalance() {
long yourBalance = 0;
for (MoneyManager moneys : moneyManagers){
yourBalance += moneys.getIncome() - moneys.getExpense();
}
moneyManagerFragment.textMoney.setText(NumberFormat.getCurrencyInstance(new Locale("id", "id")).format(yourBalance));
}
@Override
public int getItemCount() {
return moneyManagers.size();
}
@Override
public int getItemViewType(int position) {
if(position == 0){
return THIS_DATE;
}else{
return THIS_DATA;
}
}
private class DateViewHolder extends RecyclerView.ViewHolder {
TextView textDate;
public DateViewHolder(@NonNull View itemView) {
super(itemView);
textDate = itemView.findViewById(R.id.textDate);
}
}
private class DataViewHolder extends RecyclerView.ViewHolder{
TextView textName , textMoney, textDate;
ImageView imageCategory;
public DataViewHolder(@NonNull View itemView) {
super(itemView);
textName = itemView.findViewById(R.id.textName);
textMoney = itemView.findViewById(R.id.textIncomeOrExpense);
imageCategory = itemView.findViewById(R.id.imageCategory);
textDate = itemView.findViewById(R.id.textDateTime);
}
}
Некоторая помощь или предложение будут полезны, и извините за плохую грамматику перед