java - Android 按距离重新排序适配器

标签 java android sorting adapter

我正在尝试按距离重新排序我的项目列表(使用 android getListView,而不是自定义),但我遇到了问题。

我正在使用 Maps Utils inside 适配器 ( SomeAdapter ) 获取以米为单位的球面距离(双倍)。

double distance = SphericalUtil.computeDistanceBetween(fromCoord, toCoord);

但是在我填充适配器 (AsyncTask) 之后,我需要在我的 onPostExecute 上缩短距离,但我不知道。

    @Override
    protected void onPostExecute(Boolean result) {
        try {
            SQLiteHelper dbHelper = new SQLiteHelper(getActivity());
            pds = new SomeDataSource(dbHelper.db);

            ArrayList<Raids> some = pds.getAllRaids();

            SomeAdapter listViewAdapter = new SomeAdapter(getActivity(), some);
            getListView().setAdapter(listViewAdapter);

            SharedPreferences somename = context.getSharedPreferences("SomeName", Context.MODE_PRIVATE);
            Boolean UserOrder = somename.getBoolean("UserOrder", false);
            if (UserOrder){

            }

        } catch (SQLiteException | NullPointerException s) {
            Log.d("SomeName", "SomeFrag:", s);
        }
    }

谢谢

最佳答案

只需在您的Raids 类中实现Comparable 接口(interface)-

class Raids implements Comparable<Raids> {
    private double distance;
    ...

    @Override
    public int compareTo(Raids instance2) {
        if (this.distance < instance2.distance)
            return -1;
        else if (this.distance > instance2.distance)
            return 1;
        else
            return 0;
    }
}

然后对其调用Collections.sort -

ArrayList<Raids> some = pds.getAllRaids();
Collections.sort(some);

并更新适配器-

listViewAdapter.notifyDataSetChanged();

关于java - Android 按距离重新排序适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46073515/

相关文章:

java - Eclipse Java JDE 中的 SWT 不工作

java - 高效的排序功能

java - @Component Spring注解标准作用域

android - 在 Android 中录制音频时捕获时间戳

list - 在 Flutter/Dart 中映射多个列表?

bash - 使用 awk 获取列的最大值,对于另一列的每个唯一值

java - 为什么在堆中创建字符串对象和字符串文字的串联?

android - GL 表面和可见性 : Gone

android - 如何在两点之间沿着现有道路绘制路线?

arrays - 列出出现在两个列表中的元素?