При использовании notifyItemInserted onBindViewHolder сохраняет позицию, где был вставлен элемент - PullRequest
0 голосов
/ 31 октября 2019

Когда я добавляю новый элемент, используя следующую строку кода: -

proAdapter.notifyItemInserted(0);

onBindViewHolder сохраняет позицию 0.

Что является проблемой при использовании прослушивателя onClick, поскольку онвсегда будет в позиции 0

Так что, если я нажму и попытаюсь удалить 5-й элемент, элемент в позиции 0 всегда будет удален.

Есть ли способ сбросить позицию onBindViewHolder?

Когда я использую следующее, тогда нет проблем: -

proAdapter.notifyDataSetChanged();

Вот мой код при добавлении нового элемента в класс Java

        setPro.addToSpinnerItems(0, newItem);

        //proAdapter.notifyDataSetChanged();
        proAdapter.notifyItemInserted(0);
        smoothScroller.setTargetPosition(0);
        layoutManager.startSmoothScroll(smoothScroller);

Вот мой код для onclicklistener

        holder.myImage.setOnClickListener(v -> {
        spinnerItems.remove(position);
        Log.d("myTag", "Delete item: " + position);
        notifyDataSetChanged(); //Here I could also use notifyItemRemoved
    });

1 Ответ

1 голос
/ 31 октября 2019

Получите позицию viewHolder, используя getAdapterPosition() вместо того, чтобы сохранять ее в переменной, измените ваш код на что-то вроде этого

    holder.myImage.setOnClickListener(v -> {
    int position = holder.getAdapterPosition();
    spinnerItems.remove(position);
    Log.d("myTag", "Delete item: " + position);
    notifyItemRemoved(position); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...