Ich habe keinen einfachen Weg gefunden. Ich habe zusätzliche Spalten in der Sortierungstabelle erstellt, die normalisierte Daten enthalten (notiert here). Erstellt Konstante für normalisierte Tabellenspalten Namensprefix:
public static final String ASCII_PREFIX = "ascii_";
erstellte Tabelle (für Textspalte eine weitere Spalte mit Präfix erzeugen):
String sql = "CREATE TABLE IF NOT EXISTS " + tableName + " (";
for(columnModel column: table.columns) {
if(column.position > 0){ sql += ", "; }
sql += column.dbName + " " + column.dbType;
}
for(columnModel column: table.columns) {
if(column.dbType.equals("TEXT")) {
sql += ", " + ASCII_PREFIX + column.dbName + " " + column.dbType;
}
}
sql += ")";
db.execSQL(sql);
geänderten Daten Fülltisch (normalisierten Daten für spezielle Spalte hinzugefügt werden):
//...cycle for data filling...
ContentValues values = new ContentValues();
for(columnModel column: table.columns) {
values.put(column.dbName, valueStr);
if(column.dbType.equals("TEXT")){
values.put(ASCII_PREFIX + column.dbName, normalize(valueStr));
}
}
db.insert(tableName, null, values);
und dann ich irgendwie alternativ für Textspalten:
//... in method for sorting...
String orderBy;
....
if(column.dbType.equals("TEXT")) {
orderBy = ASCII_PREFIX + column.dbName;
}else {
orderBy = column.dbName;
}