2013-02-26 2 views
3

그때 나는이 arraylists을 정렬 할 수있는 방법을 문자열 형식으로 상승하는 날짜의 ArrayList를하고 내림차순으로,내가 문자열 형식으로 날짜의 arrayLists이

ArrayList<String> aryBeginDate; 
ArrayList<String> aryDueDate; 

for (int i = 0; i < arySubject.size(); i++) { 

    RowItem row = new RowItem(); 
    row.setSubject(arySubject.get(i).toString()); 
    row.setUser(aryFromUser.get(i).toString()); 

    if (aryBeginDate.equals(" ")) { 
     row.setStartDate(" "); 
    } else { 
     row.setStartDate(aryBeginDate.get(i).toString()); \\Have to sort at this line 
    } 

    if (aryDueDate.equals(" ")) { 
     row.setEndDate(" "); 
    } else { 
     row.setEndDate(aryDueDate.get(i).toString()); \\Have to sort at this line 
    } 

    aryListBean.add(row); 

} 
+1

왜'ArrayList '자체가 없습니까? –

+0

http://stackoverflow.com/questions/13120316/how-to-sort-date-in-descending-order-from-arraylist-date-in-android?rq=1 – Ajay

답변

11

날짜를 원할 때 문자열을 사용하지 마십시오. 날짜를 사용하십시오. 날짜를 표시 할 때 문자열로만 변환해야합니다. 그렇지 않으면 코드의 모든 곳에서 날짜가 Date 유형이어야합니다. 이것은 날짜가 연대순으로 자연 순서를 가지기 때문에 연대순으로 정렬 할 수 있습니다. 당신의 indentationof를 수정, 또한

Collections.sort(rowItems, new Comparator<RowItem>() { 
    @Override 
    public int compare(RowItem r1, RowItem 2) { 
     return r1.getStartDate().compareTo(r2.getStartDate()); 
    } 
}); 

다음 RowItemstartDateendDate 입력 Date의 두 존재를 가지고 한 번

그래서, 당신은 간단한 비교기를 사용하여 시작 날짜를 기준으로 행 항목의 목록을 정렬 할 수 있습니다/다른 블록, 당신의 방법은 정말 읽을 수없는 때문에 경우 :

if (aryBeginDate.equals(" ")) { 
    row.setStartDate(" "); 
} 
else { 
    row.setStartDate(aryBeginDate.get(i).toString()); 
} 
+0

Okie을 얻을 Thanks..I .. 내 프로젝트 –

+0

안녕하세요 ... 어떻게해야합니까? 두 개의 날짜가 같은 경우 :) –

+0

그러면 compareTo 메서드는 0을 반환하고이 두 행 항목의 순서는 정의되지 않습니다. 이 값을 정의하려면 첫 번째 비교 결과가 0이면 다른 기준에 따라 두 객체를 비교하십시오. –

0

내장에있다 정렬하는 방법 ArrayList에 대한 함수입니다. sort(). String을 사용하고 있기 때문에이 방법이 효과적입니다.

+0

혼란이 있습니다. 문자열과 함께 작동합니까? ? –

+0

아니요 ... – FWeigl

+0

'sort()'는 문자열과 함께 작동합니다. – Aashray

1

문자열을 사용하여 직접 정렬하려고하면 매우 고통 스러울 것입니다. 문자열을 구문 분석하여 (매우 편리한 날짜/시간 도구 인 JodaTime을 확인) java.util.Collections.sort()를 사용하여 정렬하는 것이 좋습니다.

+1

이미 고통을 느끼고 :) 내가 –

0

먼저 문자열을 날짜로 변환하고 arraylist를 만듭니다. 그런 다음 컬렉션 정렬 방법을 사용하여 arraylist를 정렬합니다.

+0

확인에 갇혀있다 Date..plz 도움말 me..I에 문자열을 구문 분석하는 너무 많은 일을 변경해야합니다. ... Get it Thanks :) –

1

당신은 목록을 정렬 할 Comparator를 사용할 수 있습니다. 이런 식으로 뭔가 :

Collections.sort(aryListBean, new Comparator<RowItem>() { 
    @Override 
    public int compare(RowItem r1, RowItem r2) { 
     // Place your compare logic here 
    } 
}); 
2

아주 간단한 답 :

Collections.sort(mArrayList, new OutcomeAscComparator()); 
public class OutcomeAscComparator implements Comparator<Select> 
    { 
     public int compare(Select left, Select right) { 
      return left.getOutcome().compareTo(right.getOutcome()); 
     } 
    } 

선택 내림차순를 들어, 내 모델 : 오름차순은이 메소드를 호출 들어

Collections.sort(mArrayList, new OutcomeDescComparator()); 
public class OutcomeDescComparator implements Comparator<Select> 
    { 
     public int compare(Select left, Select right) { 
      return right.getOutcome().compareTo(left.getOutcome()); 
     } 
    } 

새로 고침하는 것을 잊지 말아주십시오 목록보기 목록을 오름차순 및 내림차순으로 지정하려는 경우

   mListView.invalidateViews(); 

       mAdapter.notifyDataSetChanged(); 
관련 문제