2016-12-27 2 views
1

Ich verwende Sortable TableView-Bibliothek, um die Tabellenstruktur mit der Sortierfunktion zu erstellen. Die Bibliothek ist wie folgt:Wie dynamisch Spalten in Sortable Tabellenansicht Bibliothek?

https://github.com/ISchwarz23/SortableTableView

ich die JSON-Antwort haben, in dem ich bin immer Kopf- und Körper-Tabelle. Dass ich bevölkerte Kopf- und Körper in der Tabelle:

String[] myarray = new String[goalData.getTableheaderList().size()]; 

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

    myarray[i] = goalData.getTableheaderList().get(i).getName(); 

    if (goalData.getTableheaderList().get(i).isSort()) { 

     int index = GoalsUtils.getIndex(goalData.getTableBodyList().get(0), 
       goalData.getTableheaderList().get(i).getKey()); 

     setColumnComparator(i, TableComparator.getBodyComparator(index)); 

    } 
} 

Wie Sie sehen, ich Array verwendet habe Header anzuzeigen und Körper ist auch in anderem Code in derselben Art und Weise angezeigt. Außerdem habe ich den Spaltenkomparator in der Schleife selbst verwendet, um die Spalten nach Daten zu sortieren. Dies ist meine Tabelle Komparator Klasse:

public final class TableComparator { 

private static int headerIndex; 

private TableComparator() { 
    //no instance 
} 

public static Comparator<List<TableBody>> getBodyComparator(int index) { 
    headerIndex = index; 
    return new BodyComparator(); 
} 

private static class BodyComparator implements Comparator<List<TableBody>> { 

    @Override 
    public int compare(final List<TableBody> body1, final List<TableBody> body2) { 
     return body1.get(headerIndex).getValue().compareTo(body2.get(headerIndex).getValue()); 
    } 
} 

}

Nun das Problem ist, dass ich immer in obigem Code headerIndex behoben wird. Meine Frage, wie man es dynamisch bekommt. Weiß jemand, wie man Header-Klick in dieser Bibliothek erkennt oder wie man headerIndex während der ganzen Zeit, die die Spalten-Spalte klickt, anders bekommen kann? Jede Hilfe wird geschätzt.

Antwort

1

Ich bin in der Lage, mein Problem zu lösen. Also poste ich die Antwort, wenn jemand braucht. Also habe ich headerIndex verwendet, um die Spalte zu sortieren. In der Bibliothek verwendet die columnComparator-Klasse statische Methoden für ihren Sortierzweck. Ich erreichte dynamische Sortierung mit folgenden Code:

String[] headerArray = new String[headers.size()]; 
    for (int i = 0; i < headers.size(); i++) { 
     int index = GoalsUtils.getIndex(body.get(0), headers.get(i).getKey()); 
     if (headers.get(i).isSort()) { 
      setColumnComparator(i, new TableComparator(index)); 
     } 
    } 

und My TableComparator Klasse wie folgt:

public final class TableComparator implements Comparator<List<TableBody>> { 

private int headerIndex; 

public TableComparator(int index) { 
    headerIndex = index; 
} 

@Override 
public int compare(final List<TableBody> body1, final List<TableBody> body2) { 
    return body1.get(headerIndex).getValue().compareTo(body2.get(headerIndex).getValue()); 
} 

}

Glücklich Codierung!

Verwandte Themen