我目前使用 CursorAdapter
和 Loader
。 Loader
加载的数据包含一个位置。我想从最近到最远的顺序订购我的商品。我已经计算出显示它的距离,现在我需要找到一种方法对数据进行动态排序。
我可能会在每次数据更改时修改 CursorLoader
排序,但一次又一次地执行相同的 SQL 查询只是为了更改顺序对我来说有点过分了……
有什么方法可以在 CursorAdapter
中对数据进行动态排序?
最佳答案
您应该使用 sortOrder
- CursorLoader's 的最后一个参数构造函数。
假设您的表中有名为 lat
的列表示纬度,lon
表示经度。用户的位置也通过纬度/经度 userLat
和 userLon
描述。对于排序,我们不需要知道精确的距离——大概的距离就足够了。为此,您可以使用勾股定理。
sortOder
将像这样:abs(lat - userLat)* abs(lat - userLat) + abs(lon-userLon)*abs(lon-userLon)
.此计算包含仅受 Sqlite 运算符支持。
注意 1:您必须更改上面的代码以提供正确的字符串,其中 userLat
和 userLon
被替换为它们的值。
注意2:您不能使用此公式计算精确距离。
关于android - CursorAdapter 动态排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19838258/