Я пытаюсь использовать SortCursor из AOSP, упомянутого в Как представить 2 курсора как 1 отсортированный курсор?. Однако, похоже, он вообще не сортирует курсоры, которые я даю. Как работает сортировка?
Пример кода:
String[] columnNames = {"name", "value"};
MatrixCursor matrixCursor1 = new MatrixCursor(columnNames);
matrixCursor1.addRow(new String[]{"cursor 1 value A", "9"});
matrixCursor1.addRow(new String[]{"cursor 1 value B", "2"});
matrixCursor1.addRow(new String[]{"cursor 1 value C", "1"});
MatrixCursor matrixCursor2 = new MatrixCursor(columnNames);
matrixCursor2.addRow(new String[]{"cursor 2 value A", "70"});
matrixCursor2.addRow(new String[]{"cursor 2 value B", "8"});
matrixCursor2.addRow(new String[]{"cursor 2 value C", "6"});
Cursor sortCursor = new SortCursor(new Cursor[]{matrixCursor1, matrixCursor2}, columnNames[1]);
while (sortCursor.moveToNext()) {
String name = sortCursor.getString(sortCursor.getColumnIndexOrThrow(columnNames[0]));
String value = sortCursor.getString(sortCursor.getColumnIndexOrThrow(columnNames[1]));;
Log.v("SortCursor", "Name: " + name + ", Value: " + value);
}
sortCursor.close();
Вывод, когда я запускаю этот код:
V/SortCursor: Name: cursor 2 value A, Value: 70
V/SortCursor: Name: cursor 2 value B, Value: 8
V/SortCursor: Name: cursor 2 value C, Value: 6
V/SortCursor: Name: cursor 1 value A, Value: 9
V/SortCursor: Name: cursor 1 value B, Value: 2
V/SortCursor: Name: cursor 1 value C, Value: 1
Как видите, значения полностью не отсортированы. Я бы ожидал 1, 2, 6, 8, 9, 70.