recyclerView拖放后在房间中保存新职位

时间:2018-11-14 09:50:15

标签: android android-recyclerview android-room

我已经在我的应用程序中实现了具有拖放功能的recyclerView。一切正常,直到重新启动该应用程序为止-该应用程序未保存/记住任何拖放更改。

我尝试过:

我当前的代码如下:

在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


        }
    });

拖动/移动项目时调用的方法

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?预先感谢。

1 个答案:

答案 0 :(得分:0)

如果您希望在关闭应用程序或转到其他活动后保留商品的顺序,则需要在实体文件中添加一个属性,该属性将作为该商品的订单价值。添加完成后,您可以访问dao并在对项目重新排序时使用UPDATE方法中的Collections.swap SQL,然后在列表的每次加载时,返回该属性所排序的项目。