我正在尝试为sqlite
数据库中的项目执行某种排序方法。起初我有这个RecyclerView
从数据库加载数据。
Rows http://i58.tinypic.com/ibvvr8.jpg
通过拖动手柄,我将行拖动到所需的位置。我想要做的就是保存该位置,并且能够获取它并在下次启动应用程序时重新排列行。
我尝试检测何时通过onItemMove
类的RecyclerView.Adapter
方法移动行并保存交换位置的行的新位置但是位置搞砸了我无法获得期望的结果。也许解决方案很好,但我的订购方法搞砸了..这是我在将数据传递给适配器之前实现的
public static ArrayList<Package> orderPackages(ArrayList<Package> packages) {
for(int i = 0; i < packages.size(); i++) {
Package p = packages.get(i);
int desiredPosition = p.getPosition();
if(desiredPosition != -1) {
if(desiredPosition < packages.size()) {
Package tempPackage = packages.get(i);
packages.remove(i);
packages.add(tempPackage.getPosition(), tempPackage);
}
}
}
return packages;
}
那么有没有更好的解决方案来记住移动行的位置,以便下次启动应用程序时,行将被放置在适配器的相同位置?