android - CursorAdapter 动态排序

标签 android sorting android-listview android-location android-cursoradapter

我目前使用 CursorAdapterLoaderLoader 加载的数据包含一个位置。我想从最近到最远的顺序订购我的商品。我已经计算出显示它的距离,现在我需要找到一种方法对数据进行动态排序。

我可能会在每次数据更改时修改 CursorLoader 排序,但一次又一次地执行相同的 SQL 查询只是为了更改顺序对我来说有点过分了……

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

最佳答案

您应该使用 sortOrder - CursorLoader's 的最后一个参数构造函数。

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

sortOder 将像这样:abs(lat - userLat)* abs(lat - userLat) + abs(lon-userLon)*abs(lon-userLon) .此计算包含仅受 Sqlite 运算符支持。

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

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

关于android - CursorAdapter 动态排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19838258/

相关文章:

android - 使用 OpenCV 库进行 Android 物体识别

android - Flutter:键盘出现时背景图像被挤压

javascript - 如何链接 Intl.Collat​​or().compare?

android - 我应该扩展 ListActivity 吗? (到目前为止,没有它已经很好地工作了)

android - 使用适配器在 Listview 中填充 Listview

android - Adjust pan|adjust resize 似乎不适用于 JellyBean 4.2.2-4.1.2

android - Android 如何像在 iOS 中一样广播 BLE 本地名称?

java - 扩展 ListActivity android.R.id.list

r - 使用 DT 包的数据表中的排序因素

python - 如何匹配字典中的两个值并合并结果