在 recyclerView 拖放后在 Room 中保存新位置

Save new positions in Room after recyclerView drag & drop

我在我的应用程序中实现了具有拖放功能的 recyclerView。一切正常,直到应用程序重新启动 - 任何拖放更改都不是应用程序saved/remembered。

我试过:

我当前的代码如下所示:

在onCreate

 ItemViewModel itemViewModel = ViewModelProviders.of(this).get(ItemViewModel.class);
    itemViewModel.getAllItems().observe(this, new Observer<List<Item>>() {
        @Override
        public void onChanged(List<Item> items) {

         adapter.setItemList(items);
         itemList = items; //Global variable itemList


        }
    });

item为dragged/moved

时调用的方法
private void swap(int firstPosition, int secondPosition) {
    Collections.swap(itemList, firstPosition, secondPosition);
        for(int i = 0; i < itemList.size(); i++) {
            Item currentItem = itemList.get(i);
            ItemViewModel.update(currentItem );
        }
        adapter.notifyItemMoved(firstPosition, secondPosition);
     }

有什么想法可以让我的应用程序在拖放后保存重新排序的 recyclerView 吗?提前致谢。

如果您希望在关闭您的应用程序或移动到另一个应用程序后保留项目的顺序 activity,您将需要向您的实体文件添加一个 属性,它将作为它的订单价值。添加后,您可以在重新排序项目时在 Collections.swap 方法中访问您的 dao 和 运行 UPDATE SQL,而不是在每次加载列表时,return 属性.

订购的商品