Ich entwickle eine App. Ich möchte die ArrayList
sortieren. Das Problem, mit dem ich konfrontiert bin, ist, dass bei jeder doppelten Eingabe die Sortierung fehlschlägt und die App abstürzt.Sortierung ArrayLists in Android
Das Layout ab jetzt ist:
während ich wünsche das Ergebnis in der folgenden Art und Weise haben:
ich das folgende Stück Code geschrieben haben Sortieren.
private void sortAlphaNumeric() {
/* Take a temporary list to store the original list */
/*
* Remove any white spaces in the question number as it might
* interfere in sorting
*/
String[] trimmedArray = new String[m_quesNumber.size()];
for (int i = 0; i < m_quesNumber.size(); i++) {
trimmedArray[i] = m_quesNumber.get(i).replace(" ", "");
}
m_quesNumber = new ArrayList<String>();
for (int i = 0; i < trimmedArray.length; i++) {
m_quesNumber.add(trimmedArray[i]);
}
ArrayList<String> temp_quesNumber = new ArrayList<String>(
m_quesNumber);
/* Sort the original list */
Collections.sort(m_quesNumber, new AlphanumComparator());
/* Temporary arrays */
String[] temp_prevQuesId = new String[m_quesId.size()];
String[] temp_quesMaxMarks = new String[m_quesMaxScore.size()];
Integer[] temp_quesOptional = new Integer[m_quesOptional.size()];
for (int i = 0; i < m_quesNumber.size(); i++) {
int old_position = temp_quesNumber.indexOf(m_quesNumber.get(i));
temp_prevQuesId[i] = m_quesId.get(old_position);
temp_quesMaxMarks[i] = m_quesMaxScore.get(old_position);
temp_quesOptional[i] = m_quesOptional.get(old_position);
}
m_quesId = new ArrayList<String>();
m_quesMaxScore = new ArrayList<String>();
m_quesOptional = new ArrayList<Integer>();
for (int i = 0; i < temp_prevQuesId.length; i++) {
m_quesId.add(temp_prevQuesId[i]);
m_quesMaxScore.add(temp_quesMaxMarks[i]);
m_quesOptional.add(temp_quesOptional[i]);
}
}
warum nicht einfach alle Eigenschaften in ein Objekt und verwenden Sie einen benutzerdefinierten Komparator zum Sortieren? – Krease