2017-02-05 1 views
2

У меня есть два класса объектов модели, которые связаны друг с другом:Сортировка по значению отношения?

class Car { 

    private String model; 

    private Manufacturer manufacturer; 

    // getter and setter methods 

} 

И:

class Manufacturer { 

    private String name; 

    // getter and setter methods 

} 

Как вы можете видеть, объекты, связанные (каждый автомобиль имеет производитель).

Теперь, в Королевстве, мне нужно получить все автомобили, но отсортируйте их по имени своего производителя. Как я могу сортировать значение отношения?

Прямо сейчас, все у меня есть это:

RealmResults<Car> cars = realm.where(Car.class).findAll(); 

Как я могу сортировать это по имени изготовителя, в порядке возрастания?

ответ

-1

Вам нужно что-то вроде, как показано ниже,

class MyComp implements Comparator<Manufacturer> 
    { 

    @Override 
    public int compare(Manufacturer o1, Manufacturer o2) { 
     // 
    // Compare the o1 properties with o2 properties 
    } 

} 
0

Вы, наверное, заметили, но realm.where(Car.class).findAllSorted("manufacturer.name", Sort.ASCENDING) (ссылка рода) пока не поддерживается в Realm 2.3.х.

В вашем случае самым простым способом было бы использовать преимущества Realm, являющегося базой данных без SQL, и просто сохранить имя производителя рядом с самим производителем.

class Car { 

    private String model; 

    private Manufacturer manufacturer; 

    private String manufacturerName; 

    public void setManufacturer(Manufacturer manufacturer) { 
     if(manufacturer == null) { 
      this.manufacturerName = null; // direct field access works since 0.88.0 
     } else { 
      this.manufacturerName = manufacturer.getName(); 
     } 
     this.manufacturer = manufacturer; 
    } 

} 

И:

class Manufacturer { 

    private String name; 

    // getter and setter methods 

} 

Теперь вы можете сделать:

RealmResults<Car> cars = realm.where(Car.class) 
           .findAllSorted("manufacturerName", Sort.ASCENDING); 
+0

Не знаю, почему, но это не работает. Хотя я копировал и вставлял его точно так же, как есть. –

+0

Похоже, что он присваивает 'null' всем' names_nameName'. Не знаю, почему. –

+0

, что возможно только в том случае, если 'изготовитель ', который вы установили, является' null' или их 'name' равно null; но это также возможно, если вы используете Realm 0.87.5 или старше. – EpicPandaForce