Когда я удаляю элемент, а затем добавляю новый, информация об удаленном элементе остается

Я использую вид ресайклера для добавления и удаления блоков с текстом редактирования, но когда я удаляю блок, а потом добавляю новый, информация из удаленного возвращается в новый, а мне нужно, чтобы чистый блок добавлялся

 delete.setOnClickListener(v -> {
            int position = getAdapterPosition();
            try {
                connector.remove(position);
                notifyItemRemoved(position);
                notifyItemRangeChanged(position, connector.size());
                notifyDataSetChanged();
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
            }
        });

 add.setOnClickListener(v -> {
            int position = getAdapterPosition();
            try {
                connector.add(position + 1, "");
                notifyItemInserted(position + 1);
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
            }
        });

ViewHolder заполнен:

public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView delete;
    TextInputEditText typeOfConnector;

    @SuppressLint("CutPasteId")
    public ViewHolder(View itemView) {
        super(itemView);
        delete = itemView.findViewById(R.id.iv_garbage);
        typeOfConnector = itemView.findViewById(R.id.type_of_connector_et);

        delete.setOnClickListener(v -> {
            int position = getAdapterPosition();
            try {
                connector.remove(position);
                notifyItemRemoved(position);
                notifyItemRangeChanged(position, connector.size());
                notifyDataSetChanged();
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
            }
        });

        add.setOnClickListener(v -> {
            int position = getAdapterPosition();
            try {
                connector.add(position + 1, "");
                notifyItemInserted(position + 1);
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
            }
        });
    }
}

Пожалуйста, добавьте код, в котором вы заполняете ViewHolder данными

ronginat 08.04.2019 13:41

вы можете увидеть это сейчас

Azarnoy 08.04.2019 14:14
0
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, вам не нужны все три команды:

notifyItemRemoved(position);
notifyItemRangeChanged(position, connector.size());
notifyDataSetChanged();

Для вашего случая использования: просто notifyItemRemoved(position); подойдет

Теперь в вашем методе bindViewHolder вам нужно установить Edittext в соответствующую строку в соединителе.

В bindViewHolder я установил текст для et (""), и это сработало, спасибо. если нет ответа лучше, я подтверждаю ваш

Azarnoy 08.04.2019 14:25

Другие вопросы по теме