前言

项目中用到全国的加油站数据加载 并根据经纬度算出距离 然后根据距离从小到大排序

主要是数据类型是Double 这里必须对数据进行封装

实现也不难 这里讲一下自己的实现方法和实现思路

效果图

先来看下 未排序下的效果图

仔细看上图中的距离 是没有排序的 距离都是打乱的 我们的目的是从小到大完成排序。

Double类型数据排序

Collections.sort(mList, new Comparator() {

public int compare(State o1, State o2) {

//这里的数据类型如果是double 会报错

//错误提示:cannot invoke compareTo(double) on the primitive type double

return o1.compareTo(o2);

}

});

double不能直接排序的解决方法

compareTo只适合实现了Comparable的对象类型

// 第一种修改方法:

Collections.sort(mList, new Comparator() {

public int compare(State o1, State o2) {

return new Double(o1).compareTo(new Double(o2));

}

});

}

// 第二种解决方法是:

double distance;//对distance的定义

//修改为:

Double distance;

//distance改为double的包装类Double类型

}

排序代码实现

根据我们拿到的数据 然后对数据做处理 也就是计算 拿到每个Bean里的经纬度

if (homeModelBaseBean.getCode() == SUCCESS) {

//拿到数据

List data = homeModelBaseBean.getData();

//非空判断

if (data != null && data.size() > 0) {

for (int i = 0; i < data.size(); i++) {

//排序接口 实现compare

Collections.sort(data, new Comparator() {

@Override

public int compare(HomeModel o1, HomeModel o2) {

//这里拿到当前经纬度和油站经纬度通过Utils算出每个油站距离当前的距离

//再根据距离实现从近到远的排序

double dis = GetDistanceUtils.getDistance(latLng.longitude,

latLng.latitude, o1.getGasAddressLongitude(),

o1.getGasAddressLatitude());

double dis2 = GetDistanceUtils.getDistance(latLng.longitude,

latLng.latitude,

o2.getGasAddressLongitude(), o2.getGasAddressLatitude());

//打印log看下数据排序

Log.e(TAG, "算出距离为:" + dis);

//这里使用第一种修改方法 new Double类型

//因为这个距离是算出来的 并不是后台返回定义的类型

return new Double(dis).compareTo(dis2);

}

});

}

}

mHomeView.showGasList(data);

} else {

mHomeView.showNetWorkError();

}

Log

排序实现(距离从近到远)

来源:oschina

链接:https://my.oschina.net/u/4274724/blog/4299787

android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...相关推荐

  1. android 有值代码,Android:如何在代码中获取“listPreferredItemHeight”属性的值?

    这样做: TypedValue value = new TypedValue(); ((Activity)context).getTheme().resolveAttribute(android.R. ...

  2. android键值列表,Android Json不规则键值解析与转换

    简述 在Android开发的时候,通过网络请求获取后台返回数据与上传数据给后台是十分常见的.有时候,我们会遇到需要解析和传递特殊键值的Json,对于这种情况,引出了本次要讲诉的内容. Json数据解析 ...

  3. android bean对象,Android GreenDao 保存 JavaBean 或者List JavaBean类型数据

    GreenDao 简介 数据库存储数据基本上每个APP都有用到,GreenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案,至于用法这里不再多少,网上有很资料,这里主 ...

  4. java double转换为string_Java方法将Double转换为String

    以下是Java中可用的方法,您可以使用这些方法将Double值转换为String- toString()类Double的方法 此方法返回当前Double对象的String格式.将Double值转换为S ...

  5. Java中int(Integer)类型与long(Long)类型数据的相互转化

    新手开车,先上代码,后边解析! 能看懂代码就不要看解析! PS:命名规范,i代指int类型,l代指long类型,I代指Integer类型,L代指Long类型,2(transferTo): // 首先创 ...

  6. 用gson得JSON,数值变为double类型 ,去掉double值中的小数位(3.0改为3)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 项目中有个接口的数据是从缓存中读取再组成JSON 格式返出,原本缓存中数据是这样的: 用Gso ...

  7. android 随机布尔值,在 Android 的某些机型,v1.2.2 v1.2.1 加密会导致 boolean 类型的值丢失的问题...

    What happens if you just restart the App? I mean don't do the second step. 09-23 09:24:45.328 6464-6 ...

  8. 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码

    AIDL对Java类型的支持 AIDL支持Java原始数据类型 AIDL支持String和CharSequence AIDL支持传递其他AIDL接口,但你引用的每个AIDL接口都需要一个import语 ...

  9. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

最新文章

  1. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较
  2. GitHub重大更新:在线开发上线,是时候卸载IDE了
  3. 计算机408考研重点
  4. 用神经网络解释化学键能 化学键的键能:一个方程组的特征解
  5. luogu P1519 穿越栅栏 Overfencing
  6. *【POJ - 3659】Cell Phone Network (树形dp,最小支配集)
  7. python指定条件分类输出_python基础(二)条件判断、循环、格式化输出
  8. linux 上传文件 rz命令 提示command not found 解决方法
  9. 计算机动画制作 教学设计,《设置动画效果》教学设计
  10. C++中的STL和MFC
  11. 计蒜客——回文平方数
  12. 关于vue编译版本引入的问题
  13. 操作系统实验报告清华大学LAB1
  14. 疯狂java讲义 如何_[java学习]《疯狂java讲义》
  15. 信创干部人事档案管理系统单机版 - 人力资源档案管理系统软件
  16. idea 下载vue 插件
  17. charles(抓包神器)
  18. 3 FPGA时序约束理论篇之IO约束
  19. WOS(六)——导出数据格式及处理
  20. 短线操盘的10种方法、

热门文章

  1. opencv中很有趣的仿射变换(Affine Transformation)
  2. k3s 部署, 使用注意事项
  3. Echarts数据可视化title标题,开发全解+完美注释
  4. python计算两张图像的L1和L2损失
  5. tf.image.crop_and_resize()使用
  6. ubuntu 设置静态ip,但显示scope global secondary ens33
  7. C++11Mutex(互斥锁)详解
  8. 第一个ExtJS练习(添加用户面板)
  9. 转载:网关的概念以及形象的比喻
  10. 《数据结构与算法分析:C语言描述》复习——第六章“排序”——插入排序