今天写Android应用,遇到一个对List进行排序的问题,经过google的提示,发现用Collections.sort(List list, Comparator c) 就可以对List/ArrayList进行排序,很Happy的去写代码做测试,结果发现排序没有起作用,检查之,发现代码没什么问题啊(代码如下),奇怪了。
public void changeSort(int type){
Comparator<ItemBean> comparator;
Toast.makeText(this, "type=="+type, 5).show();
switch(type){
case 1:{
// 价格从低到高排序
comparator = new PriceLowToHighComparator();
Collections.sort(list, comparator);
}
break;
case 2:{
// 价格从高到低排序
comparator = new PriceHighToLowComparator();
Collections.sort(list, comparator);
}
break;
}
adapter.setItemBeanList(list);
adapter.notifyDataSetChanged();
}
public class PriceHighToLowComparator implements Comparator<ItemBean> {
@Override
public int compare(ItemBean itemBean1, ItemBean itemBean2) {
double price1 = 0;
double price2 = 0;
if(itemBean1.getItemPrice() != null && !"".equals(itemBean1.getItemPrice())){
price1 = Double.parseDouble(itemBean1.getItemPrice());
}
if(itemBean2.getItemPrice() != null && !"".equals(itemBean2.getItemPrice())){
price2 = Double.parseDouble(itemBean2.getItemPrice());
}
if(price1 > price2){
return -1;
}
else if(price1 < price2){
return 1;
}
else{
return 0;
}
}
}