CursorLoader排序顺序和更新

时间:2015-07-11 00:51:28

标签: android sorting android-cursor android-cursorloader

我有一个使用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顺序,从此,即使排序的数据基于变化?

编辑:可能的解决方案

我唯一能想到的是维护一个“订单”列,查看器活动将对其进行排序,并选择一个“选择”列来处理选择。

在启动查看器之前,我将遍历光标插入“订单”计数器。然后我将批量插入。无论观察者中的元数据如何变化,查看者活动都应保持先前的排序。

两个额外的列感觉有点像黑客,但它应该工作。我能想到的唯一另一件事是为查看器管理一个单独的自定义数据源,但这有它自己的问题。

希望有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

使用CursorLoader的主要原因是利用一个基本活动,可以确保在没有额外编码的情况下在活动之间使用相同的数据集。但是,由于我的第二个活动需要“锁定”到之前的数据集上,我意识到这是CursorLoader的一个不好用途,因为它的主要优势是与数据库的更改保持同步。我实际上想在第二个活动中忽略这些变化。相反,我为第二个应用程序创建了一个自定义数据集管理器。

(不确定这是一个真正相关的问题,但是由于有人投了票,我会分享我的最终结论)