问题
Android应用开发中,对于搜索结果列表中的对象有多个属性的情况,我们可以针对各个属性分别进行排序操作。
类似淘宝商品列表中可以分别按照价格,销量等排序。
相关工具
- java.util.Collections
- java.util.Comparator
相关方法
- Collections.sort()
使用方法
- 使用Collections.sort()
- 将待排序的列表作为第一个参数。
- new Comparator()作为第二个参数。
- 重写Comparator的compare()方法,并实现排序规则(按照想要的属性排序)
示例代码
数据模型
// Hotel
String name;
double price;
double distance;
排序实现
public void orderByDistance(List<Hotel>hotelList, String order_type) {
switch (order_type) {
case "升序":
Collections.sort(hotelList, new Comparator() {
@Override
public int compare (Object lhs, Object rhs) {
Hotel data1 = (Hotel) lhs;
Hotel data2 = (Hotel) rhs;
return (int)(data1.getDistance() - data2.getDistance());
}
});
break;
case "降序":
Collections.sort(hotelList, new Comparator() {
@Override
public int compare (Object lhs, Object rhs) {
Hotel data1 = (Hotel) lhs;
Hotel data2 = (Hotel) rhs;
return (int)(data2.getDistance() - data1.getDistance());
}
});
break;
default:
break;
}
}
排序调用
orderByDistance(hotelList, "降序");