CursorAdapter动态排序

Mar*_*say 7 sorting android android-location android-listview android-cursoradapter

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

我可能CursorLoader每次修改数据时都会修改排序,但是一次又一次地执行相同的SQL查询只是为了改变顺序看起来对我来说太过分了......

有没有办法动态排序数据CursorAdapter

MyD*_*Tom 4

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

假设您的表具有lat以纬度和lon经度命名的列。用户的位置也通过纬度/经度userLat和来描述userLon。对于排序,我们不需要知道精确的距离 - 近似的距离就足够了。为此,您可以使用毕达哥拉斯定理。

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

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

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