gpt4 book ai didi

android - RecyclerView notifyItemMoved() 不更新位置

转载 作者:行者123 更新时间:2023-12-05 00:11:16 25 4
gpt4 key购买 nike

为什么 notifyItemMoved 不重新绑定(bind)(我的意思是 onBindViewHolder 不是调用)我的 recyclerView 适配器?在顶部或底部移动项目后,我在点击时获得旧位置

如何通过点击获取 itemView 的当前位置?

我的回收站移动方法

    fun moveUp(position: Int){
if(position>0){
itemList.swap(position, position-1)
notifyItemMoved(position, position-1)
}
}
fun moveDown(position: Int){
if(itemList.lastIndex>position){
itemList.swap(position, position + 1)
notifyItemMoved(position, position + 1 )

}
}

我的绑定(bind)方法

    override fun View.bind(item: Document, position: Int) {
document_name.text = getFileName(item.file)
this.setOnClickListener{
onItemClick(this, position)

}

最佳答案

notifyItemMoved()应该在项目移动但未更改时调用:

This is a structural change event. Representations of other existing items in the data set are still considered up to date and will not be rebound, though their positions may be altered.

这意味着赋予 onBindViewHolder() 的位置可能会发生变化。您可以使用 ViewHolder.getAdapterPosition()获取当前位置。

关于android - RecyclerView notifyItemMoved() 不更新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com