7

我目前使用 aCursorAdapter和 a Loader。加载的数据Loader包含一个位置。我想从最近到最远的顺序订购我的物品。我已经计算了距离来显示它,我现在需要找到一种方法来动态排序数据。

每次我的数据更改时,我可能都可以修改CursorLoader排序,但是一次又一次地执行相同的 SQL 查询只是为了更改顺序,这对我来说似乎有点矫枉过正……</p>

有什么方法可以动态地对数据进行排序CursorAdapter吗?

4

1 回答 1

4

您应该使用- CursorLoadersortOrder构造函数的最后一个参数。

假设您的表有以lat纬度和lon经度命名的列。用户的位置也通过纬度/经度userLatuserLon. 对于排序,我们不需要知道精确的距离——近似距离就足够了。为此,您可以使用勾股定理。

sortOder会是这样的:abs(lat - userLat)* abs(lat - userLat) + abs(lon-userLon)*abs(lon-userLon)。此计算仅包含 Sqlite 运算符支持。

注意 1:您必须更改上面的代码才能提供正确的字符串 whereuserLatuserLon替换为它们的值。

注意 2:您不能使用此公式来计算精确距离。

于 2015-03-03T14:04:38.010 回答