Когда я удаляю элемент, а затем добавляю новый, информация об удаленном элементе остается - PullRequest
0 голосов
/ 08 апреля 2019

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

 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();
            }
        });
    }
}

1 Ответ

1 голос
/ 08 апреля 2019

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

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

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

Теперь в вашем методе bindViewHolder вынеобходимо установить Edittext для соответствующей строки в соединителе.

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