【问题标题】:CursorLoader Sort Order and updatesCursorLoader 排序顺序和更新
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 2018-02-18
      • 2019-02-22
      • 2014-09-09
      • 2012-12-15
      • 1970-01-01
      • 2021-04-23
      • 2011-11-14
      相关资源
      最近更新 更多