我google了很多,但没有找到任何问题的答案:
我有一个Cursor,它查询包含纬度和经度的表格。我想按距离订购ListView给用户。 here中的第二个答案告诉我如何按距离排序。
但现在让我们说用户移动,第二项现在比第一项更接近。我现在如何重新排序列表?
不确定我是否可以提供任何有用的代码,因为它或多或少是一般性问题。
非常感谢
答案 0 :(得分:0)
如果在SQL中将排序定义为计算,那么我认为你必须重新查询。 (游标不会动态重新计算“ORDER BY”子句,这在SQL中的查询时发生。)
或者,您可以将适配器更改为由列表而不是游标支持的适配器,并实现Comparator以对数据进行排序。然后通知适配器数据已更改。假设列表中的每一行都由Item:
类型的对象支持Collections.sort(listOfItems,new Comparator<Item>(){
public int compare(Item i1, Item i2){
/* Compare your items here. Return
* -1 if i1 < i2
* 0 if i1 = i2
* 1 if i1 > i2
*/
}});