【问题标题】:How to sort a cursor with variables in android?如何在android中对带有变量的游标进行排序?
【发布时间】:2015-04-23 09:24:49
【问题描述】:

我有一个ListView(在ListFrament 中)和一个CursorAdapter,它显示了不同的地名。 开始时,列表按此名称排序(在我的查询中使用 ORDER_BY)。

现在,我在 item_row.xml 中添加了一个 TextView,其中包含该地点与用户位置的距离,这要归功于每个地点的纬度/经度和 LocationManager。我想按这个距离(从最近到最远)对我的地点列表进行排序。

问题是我在“SQL环境”之外计算距离,没有办法排序我的Cursor/ListView/Adapter...

有什么想法吗?

【问题讨论】:

  • Arrays.sort(locationArray)?

标签: android sorting listview android-cursoradapter android-cursor


【解决方案1】:

Collections.sort(List, Comparator) 与自定义Comparator 一起使用。

使用 A 类按两个整数字段之和排序的示例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class A {
    final String name;
    final int someNumber;
    final int someOtherNumber;

    A(final String name, final int a, final int b) {
        this.name = name;
        this.someNumber = a;
        this.someOtherNumber = b;
    }

    @Override
    public String toString() {
        return this.name;
    }
}

class YourComparator implements Comparator<A> {
    @Override
    public int compare(A o1, A o2) {
        final int sumO1 = o1.someNumber + o1.someOtherNumber;
        final int sumO2 = o2.someNumber + o2.someOtherNumber;
        return (sumO1 - sumO2);
    }
}

public class Main {
    public static void main(final String args[]) {
        final List<A> listOfAs = new ArrayList<A>();
        listOfAs.add(new A("Three", 1, 2));
        listOfAs.add(new A("Two", 1, 1));
        listOfAs.add(new A("Ten", 3, 7));
        listOfAs.add(new A("Five", 3, 2));
        Collections.sort(listOfAs, new YourComparator());
        System.out.println(listOfAs);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多