2012-03-22 62 views
0

我排序收集Wrt日期如下,但在集合某些日期字段是空的,它没有正确排序。排序集合Wrt到日期

public class DateComparator implements Comparator<MyList>{ 
    private static boolean isAscending; 
    private static final String TAG = "DateComparator"; 


    public static boolean isAscending() { 
     return isAscending; 
    } 


    public static void setAscending(boolean isAscending) { 
     DateComparator.isAscending = isAscending; 
    } 


    @Override 
    public int compare(MyList lhs, MyList rhs) { 
     String pattern = "MM/dd/yyyy"; 
     try { 
      String dueDateLHS = lhs.getDueDate();//some field are null 
      String dueDateRHS = rhs.getDueDate();//some field are null 

      if(dueDateLHS!=null && dueDateRHS!=null){ 
       SimpleDateFormat dateFormatLHS = new SimpleDateFormat(pattern); 
       SimpleDateFormat dateFormatRHS = new SimpleDateFormat(pattern); 
       Date dateLHS = dateFormatLHS.parse(dueDateLHS); 
       Date dateRHS = dateFormatRHS.parse(dueDateRHS); 
       if(isAscending) 
        return dateLHS.compareTo(dateRHS); 
       else 
        return dateRHS.compareTo(dateLHS); 
      } 
     } catch (ParseException e) { 
      Log.e(TAG, ""+e.getMessage()); 
      e.printStackTrace(); 
     } 
     return -1; 
    } 

} 

我应该如何解决这个问题?

回答

2

你不处理一方为空而另一方不为空的情况。您需要添加如下内容:

else if(dueDateLHS == null && dueDateRHS!=null){ 
    if(isAscending) { 
    return -1; 
    } else 
    return 1; 
    } 
} else if (dueDateLHS != null && dueDateRHS==null){ 
//etc 
} else if (dueDateLHS == null && dueDateRHS==null){ 
    return 0; 
}