私はアプリを開発中です。私はArrayList
をソートしたいと思います。私が直面している問題は、重複エントリがあるたびに並べ替えが失敗し、アプリケーションがクラッシュすることです。今のようAndroidでArrayListをソートする
レイアウトである:
Iは、以下のように結果を希望する一方:
私は次のコードを書かれていますソート。
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]);
}
}
なぜ、すべてのプロパティを1つのオブジェクトに入れてカスタムコンパレータを使用して並べ替えるだけではないのですか? – Krease