Как правильно создать MultipleView тип Recycler-View? - PullRequest
1 голос
/ 25 октября 2019

как создать программу повторного просмотра с несколькими типами просмотра. я пытался с моим кодом, но этот метод на самом деле не работает.

я получил мой код из этой ссылки 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);
        }
    }

Некоторая помощь или предложение будут полезны, и извините за плохую грамматику перед

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...