重新排序 Android 回收站视图中的项目后,位置没有更新

After reordering the items in Android recycler view the position is not updating

在我的应用程序中,我在回收站视图中显示了一个按钮列表,在 ItemTouchHelper.SimpleCallback 的帮助下,onMove 函数让我能够对按钮重新排序,但重新排序后位置没有更新。例如:-(如果我将 button1 从 0 位置拖到 1 位置,那么 button1 应该显示它的新位置是 1,但它显示的是旧位置,即 0)是否有任何变化,以便 我可以访问它并了解我的按钮的新位置。 任何帮助将不胜感激。

ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP
                | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END , 0) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
    
                int fromPosition = viewHolder.getAdapterPosition();
                int toPosition = target.getAdapterPosition();
    
                Collections.swap(datalist,fromPosition,toPosition);
    
                recyclerView.getAdapter().notifyItemMoved(fromPosition,toPosition);
                return false;
            }
    
    
            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
    
            }
        };

我通过通知适配器中的整个数据集解决了这个问题:

Collections.swap(datalist,fromPosition,toPosition);
recyclerView.getAdapter().notifyItemMoved(fromPosition,toPosition);
recyclerView.getAdapter().notifyDataSetChanged()
return false;

这应该根据他们的新更新视图 position.This 是项目更改事件,而不是结构更改事件。它表明位置处数据的任何反映都已过时,应进行更新。

  recyclerView.getAdapter().notifyDataSetChanged();