我目前使用 aCursorAdapter
和 a Loader
。加载的数据Loader
包含一个位置。我想从最近到最远的顺序订购我的物品。我已经计算了距离来显示它,我现在需要找到一种方法来动态排序数据。
每次我的数据更改时,我可能都可以修改CursorLoader
排序,但是一次又一次地执行相同的 SQL 查询只是为了更改顺序,这对我来说似乎有点矫枉过正……</p>
有什么方法可以动态地对数据进行排序CursorAdapter
吗?
我目前使用 aCursorAdapter
和 a Loader
。加载的数据Loader
包含一个位置。我想从最近到最远的顺序订购我的物品。我已经计算了距离来显示它,我现在需要找到一种方法来动态排序数据。
每次我的数据更改时,我可能都可以修改CursorLoader
排序,但是一次又一次地执行相同的 SQL 查询只是为了更改顺序,这对我来说似乎有点矫枉过正……</p>
有什么方法可以动态地对数据进行排序CursorAdapter
吗?
您应该使用- CursorLoadersortOrder
构造函数的最后一个参数。
假设您的表有以lat
纬度和lon
经度命名的列。用户的位置也通过纬度/经度userLat
和userLon
. 对于排序,我们不需要知道精确的距离——近似距离就足够了。为此,您可以使用勾股定理。
sortOder
会是这样的:abs(lat - userLat)* abs(lat - userLat) + abs(lon-userLon)*abs(lon-userLon)
。此计算仅包含 Sqlite 运算符支持。
注意 1:您必须更改上面的代码才能提供正确的字符串 whereuserLat
并userLon
替换为它们的值。
注意 2:您不能使用此公式来计算精确距离。