2013-10-09 1 views
1

Я хочу сделать сортировку данных одним нажатием кнопки.Реализация сортировки в Android

Я разборе XML и хранение его значения в списке с помощью этого класса

public class MyTripRespone { 
    private List<MyTripCorporateBookingApprovals> coroprateBookingDetails = null; 

    public List<MyTripCorporateBookingApprovals> getCoroprateBookingDetails() { 
     return coroprateBookingDetails; 
    } 

    public void setCoroprateBookingDetails(
      List<MyTripCorporateBookingApprovals> coroprateBookingDetails) { 
     this.coroprateBookingDetails = coroprateBookingDetails; 
    } 

} 

В Утвержденной классе я есть 3 значения, date.id, имя.

public class MyTripCorporateBookingApprovals { 

    private String insertTime =""; 
    private String txid =""; 
    private String journeyDate = ""; 
    private String passengerFirstName = ""; 


    public String getInsertTime() { 
     return insertTime; 
    } 
    public void setInsertTime(String insertTime) { 
     this.insertTime = insertTime; 
    } 
    public String getTxid() { 
     return txid; 
    } 
    public void setTxid(String txid) { 
     this.txid = txid; 
    } 

    public String getJourneyDate() { 
     return journeyDate; 
    } 
    public void setJourneyDate(String journeyDate) { 
     this.journeyDate = journeyDate; 
    } 
    public String getReturnDate() { 
     return returnDate; 
    } 
    public void setReturnDate(String returnDate) { 
     this.returnDate = returnDate; 
    } 
    public String getPassengerTitle() { 
     return passengerTitle; 
    } 
    public void setPassengerTitle(String passengerTitle) { 
     this.passengerTitle = passengerTitle; 
    } 
    public String getPassengerFirstName() { 
     return passengerFirstName; 
    } 
    public void setPassengerFirstName(String passengerFirstName) { 
     this.passengerFirstName = passengerFirstName; 
    } 




} 

Аналогично для имени и идентификатора из этого я ставлю значение в макете, что я накачивание динамически в цикле. Поэтому я хочу, когда пользователь нажимает на sortByDate. Значения упорядочиваются по дате в порядке убывания. Среднее время последнего времени, а затем и так далее. Как мы можем это сделать? Пожалуйста помоги .

После Калян внушения

public class MyTripComparator implements Comparator<MyTripCorporateBookingApprovals>{ 

    @Override 
    public int compare(MyTripCorporateBookingApprovals lhs, 
      MyTripCorporateBookingApprovals rhs) { 
     return lhs.getJourneyDate().compareTo(rhs.getJourneyDate()); 
    } 



} 

public void sortByDate(View v) { 
    Collections.sort(//what i have to here, new MyTripComparator()); 

    } 
+0

Вышеприведенный код хорош..Collections.sort (// что мне нужно здесь, новый MyTripComparator()); но здесь, в качестве первого аргумента, вам нужно передать список объектов, которые вы хотите отсортировать. В этом классе MyTripRespone вы устанавливаете List coroprateBookingDetails, вы должны передать этот объект списка. –

+0

Список coroprateBookingDetails = null; \t \t Collections.sort (coroprateBookingDetails, новый MyTripComparator()); как это, или каким-либо другим способом, если –

+0

coroprateBookingDetails не равно нулю и содержит все объекты, которые прекрасно .. –

ответ

0

Попробуйте

В MyTripCorporateBookingApprovals Класс

public class MyTripCorporateBookingApprovals implements 
     Comparator<MyTripCorporateBookingApprovals>, 
     Comparable<MyTripCorporateBookingApprovals> { 

     } 

    @Override 
    public int compare(MyTripCorporateBookingApprovals lhs, 
      MyTripCorporateBookingApprovals rhs) { 
     try { 
      return new SimpleDateFormat("yyyy-MM-dd").parse(lhs.getJourneyDate()) 
        .compareTo(
          new SimpleDateFormat("yyyy-MM-dd").parse(rhs 
            .getJourneyDate())); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      return -1; 
     } 
    } 

@Override 
    public int compareTo(MyTripCorporateBookingApprovals another) { 
     try { 
      return new SimpleDateFormat("yyyy-MM-dd") 
        .parse(this.getJourneyDate()).compareTo(
          new SimpleDateFormat("yyyy-MM-dd").parse(another 
            .getJourneyDate())); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      return -1; 
     } 
    } 

в главном классе, где вы должны использовать эту

Collections.sort(tripParseData.getCoroprateBookingDetails());