2017-01-18 1 views
0

Ich habe einen Kontakt, die einen colum Namen haben, die Namen auf Lower und Uppercase haben. Ich würde alles mit Case.INSENSITIVE finden wollen und ich habe keine Antworten gefunden. Wie soll ich das machen?Realm findAll mit Fall Insensitive auf Android

Ich tue es:

realm.where(Contact.class).findAllAsync().sort("name") 

Antwort

0

Realm hat keine native Lösung für diese Frage.

Ich habe es gelöst extra colum mit Kleinbuchstaben „name“ zu schaffen, und dann eine Art von Klein, wie folgt aus:

realm.where(Contact.class).findAllSortedAsync("lowerCase")); 
+0

anstatt findAllAsync() zu verwenden und dann sort() zu verwenden, besser findAllSortedAsync() – randy

0

Case.INSENSITIVE Flagge noch nicht für Sortiermethode unterstützt wird. Sie sollten alle Ergebnisse erhalten und dann manuell sortieren:

RealResults<Contact> list = realm.where(Contact.class) 
    .findAll() 
    .sort("name"); 

Collections.sort(list, new Comparator<Contact>() { 
    @Override 
    public int compare(Contact c1, Contact c2) { 
     return c1.getName().compareToIgnoreCase(c2.getName()); 
    } 
}); 
+0

Ich bin nicht für einen String suchen, ich bin für alle Objekte gesucht auf Kontakte. Ich würde es gerne adapter haben. – lsca

+0

Warum brauchen Sie also Groß- und Kleinschreibung? hol einfach alles. – Yoleth

+0

gibt zuerst die Kleinbuchstaben in der Reihenfolge und nach den Großbuchstaben in Reihenfolge zurück. – lsca