RecyclerView notifyItemMoved() 不更新位置

Top*_*per 1 android android-recyclerview

为什么notifyItemMoved 不重新绑定(我的意思是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 )

    }
}
Run Code Online (Sandbox Code Playgroud)

我的绑定方法

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

    }
Run Code Online (Sandbox Code Playgroud)

bwt*_*bwt 7

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

这是一个结构性变化事件。数据集中其他现有项目的表示仍被认为是最新的,不会反弹,尽管它们的位置可能会改变

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