在我的应用程序中,用户应该能够更改项目的顺序。我通过SELECT语句按Order字段排序表中的数据,并将结果存储在List中。然后,我在Recycler View中显示List数据。
我想将“Item 5“从回收器视图位置4和Order字段值12移动到回收器视图位置1。
我的第一个问题:如何使用Java/Kotlin将项目5移动到回收器位置1?
我的第二个问题:如何将项目5移动到回收站位置1并相应地更改数据库中的订单字段?意味着当我将项目5移动到回收站位置1时,项目5订单字段应更改为5,项目2订单字段应更改为7,项目3订单字段应更改为9,项目4订单字段应更改为12
**The Recycler查看商品:**x1c 0d1x
1条答案
按热度按时间kpbwa7wx1#
回答一,在更改数据库后使用新数据重建/刷新recyclerview。
答案二粗略地说你必须
1.确定受影响行的范围(顺序介于从到之间的行)
1.使用移动方向上下一行的值移动受影响行(不是要移动的行)的值
1.更改移动行中的值
这是相当复杂的,特别是当所有的阶段都要合并的时候。然而,这可以通过使用公共表表达式(只在查询期间存在的临时表)的SQLite来实现。
以下是解决所提出问题的演示,即从:-
到
这是一个演示(注解和格式化),演示了将在Room中实现的核心查询(注解表示核心查询):-
要在Room中使用上述内容,您只需要核心查询(调整为from和to值的表参数),例如:-
*注显然,组件名称(其中的表和列)必须更改以适应实际的表和列,即
*行ID、e、目标值、起始值、新单词、cte_args和cte_行目标更改
重要提示以上只是解决了将订单移动到较低订单的问题。移动到较高订单的逻辑与此类似,但相反。您可能需要
moveOrderUp
函数。您可能需要第三个函数来确定调用哪个移动函数,例如此外,该解决方案是原则性的,尚未经过彻底测试,因此可能存在未检测到的问题。