【发布时间】:2015-08-23 23:26:37
【问题描述】:
我正在尝试对sqlite 数据库中的项目执行某种排序方法。起初我有这个RecyclerView 从数据库加载数据。
通过拖动手柄,我将行拖动到所需位置。我想做的事情是保存该位置并能够在下次启动应用程序时获取它并重新排列完全相同的行。
我尝试通过RecyclerView.Adapter 类的onItemMove 方法检测行何时移动,并为交换位置的行保存新位置,但位置搞砸了,我没有得到想要的结果。也许解决方案很好,但我的排序方法搞砸了。这是我在将数据传递给适配器之前实现的
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;
}
那么有没有更好的解决方案来记住行移动的位置,以便下次我启动应用程序时,该行将放置在适配器中的同一位置?
【问题讨论】:
标签: android sqlite android-recyclerview