排序使用的是
Collections.sort(List,Comparator)
自定義類實現Comparator接口
假如A的值大於B,你返回1。這樣調用Collections.sort()方法就是升序
假如A的值大於B,你返回-1。這樣調用Collections.sort()方法就是降序
import com.lanhetech.api.iso8583msg.utils.MyLog;
import com.lanhetech.model.user.Trade;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
/**
* 訂單按時間排序,最近的日期顯示在上面
*/
public class ComparatorDate implements Comparator {
public static final String TAG = "ComparatorDate";
SimpleDateFormat format = new SimpleDateFormat("yyyy/M/d H:mm:ss");
public int compare(Object obj1, Object obj2) {
Trade t1 = (Trade) obj1;
Trade t2 = (Trade) obj2;
// return t1.getTradetime().compareTo(t2.getTradetime()); // 時間格式不好,不然可以直接這樣比較
Date d1, d2;
try {
d1 = format.parse(t1.getTradetime());
d2 = format.parse(t2.getTradetime());
} catch (ParseException e) {
// 解析出錯,則不進行排序
MyLog.e(TAG, "ComparatorDate--compare--SimpleDateFormat.parse--error");
return 0;
}
if (d1.before(d2)) {
return 1;
} else {
return -1;
}
}
}
使用:
ComparatorDate c = new ComparatorDate(); Collections.sort(notRechargeTrades, c); // 訂單按時間排序 Collections.sort(isFinishTrades, c);
private List<Trade> notRechargeTrades = new ArrayList<>(); private List<Trade> backMoneyTrades = new ArrayList<>(); private List<Trade> isFinishTrades = new ArrayList<>();
public class Trade extends ComUser implements Serializable { .... private String tradetime; // 充值時間 ....