Recyclerview передает данные в следующий элемент при удалении одного элемента

Существует два варианта операций с поперечными потоками.

Control.InvokeRequired Property 

, а второй - использовать

SynchronizationContext Post Method

Control.InvokeRequired полезен только при работе с элементами управления, унаследованными от Control класс, в то время как SynchronizationContext можно использовать в любом месте. Некоторая полезная информация относится к следующим ссылкам:

Пользовательский интерфейс Cross Thread Update | .Net

Пользовательский интерфейс Cross Thread Update с использованием SynchronizationContext | .Net

1
задан GianhTran 13 July 2018 в 03:47
поделиться

3 ответа

Замените ваш метод onBindViewHolder и попробуйте,

@Override
public void onBindViewHolder(final CreditCard_PostPayAdapter.MyViewHolder holder, int position) {
    holder.mDeleteButton.setTag(position);
    holder.mDeleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int clickedPos = (int) view.getTag();
            mHeaderText.remove(clickedPos);
            notifyItemRemoved(position);
        }
    });
}
1
ответ дан Sagar Zala 17 August 2018 в 13:42
поделиться
  • 1
    Где проходит передача данных? – stackersoverfllawrer stacking 13 July 2018 в 04:01
  • 2
    Ваш код только удаляет элемент в списке, который уже был задан в вопросе. – FreelancsAndroidLovesyou 13 July 2018 в 04:04
  • 3
    Это должен быть правильный ответ. – Abu Yousuf 13 July 2018 в 04:21
  • 4
    Вы получаете NPE, потому что вы, вероятно, не устанавливаете тег вашего представления. Вам нужно будет установить тег mDeleteButton как позицию в onBindViewHolder – Dung Ta 13 July 2018 в 04:39
  • 5
    Вы должны сохранять данные EditText в данных списка во время обновления. – Sagar Zala 13 July 2018 в 06:50

Если вы хотите удалить второй элемент. удалить элемент, а оставшаяся часть будет обработана recyclerAdapter, чтобы удалить строку и выровнять данные.

внутри вашего onClickListener, удалить данные из ArrayList и вызвать notifyItemRemoved ()

write ваш onClick внутри класса ViewHolder

onClick(View view){
        mHeaderText.remove(getAdapterPosition());
        notifyItemRemoved(getAdapterPosition());
}

Надеюсь, это поможет вам.

0
ответ дан Chethan Kumar 17 August 2018 в 13:42
поделиться

вы удаляете элемент в списке и обновляете свой адаптер, просто делая это в своем onClick:

holder.mDeleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                               mHeaderText.remove(position);
                               notifyItemRemoved(position);
                               notifyItemRangeChanged(position, mHeaderText.size());

            }
        });
0
ответ дан Shiva Snape 17 August 2018 в 13:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: