Listview Array sortieren (Dateien)

  • 9 Antworten
  • Letztes Antwortdatum
kukuk

kukuk

App-Anbieter (kostenlos)
37
Hallo alle zusammen. Ich erstelle eine Liste mit Hilfe eines Array adapters und mit dem Anzeigen von dateien die sich in einem bestimmten Ordner befinden.
Die Dateien haben folgendes Format: 12.03.2014 u.s.w
Das wir in einer ListView angezeigt die ein bisschen modifiziert ist um auch eine Überschrift u.s.w anzuzeigen.
Jetzt würde ich gerne mal wissen wie ich die hinzugefügten Daten sortieren kann? also Sprich das der nach Monaten sortiert oder nur nach tagen oder so? Weil momentan werden die Dateien halt so aufgelistet, wie Sie im Ordner liegen.
Oder kann damit auch irgendwie im vorfeld schon festlegen das z.b alle mit 00.01.0000 erst angezeigt werden???
Ich hoffe mir kann jemand helfen?
File[] files = dirDir.listFiles();

for (File file : files){

Für jede Datei die im Ordner gefunden wurde, wird folgendes gemacht:
Code:
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tage);

ArrayList<NewsItem> image_details = getListData();
        final ListView lv1 = (ListView) findViewById(R.id.listView1);
        lv1.setAdapter(new CustomListAdapter(this, image_details ));
}

private ArrayList<NewsItem> getListData() {
        ArrayList<NewsItem> results = new ArrayList<NewsItem>();
für jede Datei:
NewsItem newsData = new NewsItem();
newsData.setReporterName(line + "h " + line_minuten + "min" + "\n" + "Überstunden Zeitraum von: ");                            newsData.setDate(line1);
results.add(newsData);


}
 
So sortierst du zb. nach Alphabet:

Code:
public int compare(String object1, String object2) {
                return object1.compareToIgnoreCase(object2);
            };

Das musst du dann nur noch deinen Anforderungen anpassen. (Mit den Zahlen aufsteigend)
 
Oder du baust dir ein Adapter der auf einer sortierten Datenstruktur arbeitet.

LG. Dagobert

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Ich habe mir das hier jetzt gebaut, aber leider ist das nicht richtig sortiert!!!!!
Der Berücksichtigt nur die die ersten beiden ziffern.
Die List und der der Array enthält nur Datumsangaben wie z.b 21.07.20014
Und mit meinem Code bekommme ich die Tage sortiert. alles andere interessiert den nicht.
Aufsteigend:
java.util.Arrays.sort( dateinamen );

Absteigend:
List<String> list = new ArrayList<String>();

Collections.addAll( list, dateinamen );
Comparator<String> comparator = Collections.reverseOrder();
Collections.sort( list, comparator );


Collections.sort(list, new StringDateComparator());
 
Drehe das Datum einfach um.Zu erst Jahre, dann Monat und zuletzt Tage (JJJJMMTT). Und sortiere es dann.

Oder wandele das Datum zu Millisekunden um.
android - Convert date to miliseconds - Stack Overflow

Sortiere die Zahle, und konvertiere dann wieder zurück.

Code:
[FONT=Verdana][SIZE=4][FONT=Verdana][SIZE=2]SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");[/SIZE][/FONT][FONT=Verdana][SIZE=2]
String dateString = formatter.format(new Date(dateInMillis)));[/SIZE][/FONT][/SIZE][/FONT]
 
  • Danke
Reaktionen: kukuk
Warum vergleichst du nicht die zwei Date Objekte?

lg. Dagobert
 
Habe zu viel Star Trek geschaut. :)

Meistens liegt die Zeit bei mir in ms vor. Integer sind einfacher zu handhaben und man ist flexibler. Ich konvertiere eigentlich nur bei der Ausgabe in den Typ Date.

Ist eine alte Angewohnheit. Am liebsten hätte ich ein julianische Datum, aber die Systemzeit macht es auch. Julianisches Datum
 
Okay... wenn du zahlen magst.. nimm den long und vergleiche die :p

lg.
 
Hab das Datum umgedreht yyyy mm dd und dannsortiert.

Hat super geklappt. VIELEN Dank
 
Zurück
Oben Unten