【发布时间】:2015-09-29 21:14:56
【问题描述】:
我有一个使用CursorLoader 的图库应用程序,它允许按某些元数据对图像进行排序。排序是在创建CursorLoader 时定义的。
// Returns a new CursorLoader
return new CursorLoader(
this, // Parent activity context
Meta.Data.CONTENT_URI, // Table to query
projection, // Projection to return
selection, // No selection clause
selectionArgs, // No selection arguments
sort // Default sort order
);
如果用户选择了一张图片,他们就会被带到观看者面前。他们有机会操纵元数据。这会导致自动采取措施,这可能会令人困惑。选择的图像可能会根据排序从中间移动到最后,用户不会意识到这一点,他们认为可以滑动时根本无法滑动。
有没有什么方法可以先对CursorLoader 进行排序,然后让它保持_id 的顺序,即使排序基于的数据发生了变化?
编辑:可能的解决方案
我唯一能想到的就是维护一个“顺序”列,查看器活动将对其进行排序,并维护一个“选择”列来处理选择。
在启动查看器之前,我将遍历插入“订单”计数器的光标。然后我将批量插入。无论查看器中的元数据发生什么变化,查看器活动都应保持之前的顺序。
两个额外的列感觉有点像 hack,但它应该可以工作。我能想到的唯一另一件事是为查看器管理一个单独的自定义数据源,但这有它自己的问题。
希望有更好的方法来做到这一点。
【问题讨论】:
标签: android sorting android-cursor android-cursorloader