如何通过ID删除recyclerview项目?

问题描述 投票:1回答:1

我已经在顶视图中显示了数据。而且我不想在recyclerview上显示该数据。我该怎么办?


这是我的用于删除项目的适配器,但是不起作用。


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)
}
android kotlin android-recyclerview recycler-adapter
1个回答
0
投票

首先将其从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())
}

更新:

onBindViewHolder中:

deletedata(data,holder)

onBindViewHolder内通过holder,然后像这样使用它:

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

    item!!.removeAt(holder.adapterPosition)
    notifyItemRemoved(holder.adapterPosition)
    notifyItemRangeChanged(holder.adapterPosition, item!!.size)
}
© www.soinside.com 2019 - 2024. All rights reserved.