2012-03-22 5 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; 
} 
関連する問題