Как удалить элементы утилизатора по идентификатору? - PullRequest
1 голос
/ 08 февраля 2020

Я отобразил данные в виде сверху. и я не хочу отображать эти данные в обзоре переработчика. что я могу сделать?


это мой адаптер для удаления элементов, но не работает.


override fun onBindViewHolder(holder: ViewHolder, position: Int) {

    val data = this.item?.get(position)

    val id_data= data!!.idberita.toString()

    if(sharedPrefDetailBerita.spIdberita == id_data){
        removeItem(data)
    }
}

private fun removeItem( infoData: ModelAuthor?) {
    val currPosition = this.item!!.indexOf(infoData)
    item!!.removeAt(currPosition)
    notifyItemRemoved(currPosition)
}

1 Ответ

0 голосов
/ 08 февраля 2020

Прежде всего удалите его из вашего list:

 yourList.remove(getAdapterPosition());

Затем используйте это:

 notifyItemRemoved(getAdapterPosition());

Как минимум обновите recyclerview с помощью notifyItemRangeChanged:

notifyItemRangeChanged(getAdapterPosition(),yourList.size());

Тогда ваш remove function должен быть изменен на:

private fun removeItem( infoData: ModelAuthor?) {

    item.remove(getAdapterPosition())
    notifyItemRemoved(getAdapterPosition())
    notifyItemRangeChanged(getAdapterPosition(),item.size())
}

Обновление:

In onBindViewHolder:

deletedata(data,holder)

В случае выхода из onBindViewHolder pass holder затем используйте его следующим образом:

private fun deletedata(infoData: ModelAuthor?,holder: ViewHolder){

    item!!.removeAt(holder.adapterPosition)
    notifyItemRemoved(holder.adapterPosition)
    notifyItemRangeChanged(holder.adapterPosition, item!!.size)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...