我有以下 RealmObject:

public class City extends RealmObject {
    private String cityId;
    private RealmList<Street> streets;

    public String getId() {
        return cityId;
    }

    public void setCityId(String cityId) {
        this.cityId = cityId;
    }

    public RealmList<Street> getStreets() {
        return streets;
    }

    public void setStreets(RealmList<Street> streets) {
        this.streets = streets;
    }
}

现在有了 cityId,我需要查询特定城市的街道。怎么做?我所做的尝试是:
    Realm.getInstance(context).where(City.class).equalTo("cityId", someCityId, false)
         .findFirst().getStreets().where().findAll()

但这会导致异常。我需要在实现过滤的 ListView 中显示街道,因此我需要将街道设为 RealmResults 才能使用 RealmBaseAdapter<Street>

最佳答案

正确的方法是在您的Activity中以onCreate()打开并在onDestroy()in your custom application class中关闭一个打开的Realm实例。

然后,您可以使用该 Realm 实例来查询 Realm

City city = realm.where(City.class).equalTo("cityId", cityId).findFirst();

然后,您可以像访问其他列表一样访问RealmList<T>
RealmList<Street> streets = city.getStreets();

然后,您可以使用recyclerview获取streets列表中给定索引的 View 。

10-08 13:56