我有一张Realm Objects
我正在呼叫Foo
的表格。
其中一列Foo
指向另一列Realm Object
,Bar
。
我想查询表Foo
并挑选出我需要的所有Bar
个对象,然后将它们添加到RealmBaseAdapter
。
但是,据我所知,RealmBaseAdapter
只在其构造函数中包含RealmResults
列表。
如何在不查询RealmResults
表格的情况下形成Bar
Bar
?
或者,我如何查询Foo
表并返回RealmResults
Bar
?
例如,假设您有一张产品和产品细分表,例如:大米krispies,玉米片,水果圈都属于谷物产品细分市场。我希望按照一些规范查询产品表,并列出结果中包含的所有产品细分。
答案 0 :(得分:4)
由于没有办法直接这样做,我最终制作了自己的适配器。
public class BarAdapter extends ArrayAdapter<Bar> {
//code to instantiate the adapter, inflate views, etc
}
这一部分是微不足道的,唯一要做的艰苦工作是通过策划来自Foo的一个查询 - &gt; Bar来获得我想要的结果。它最终看起来像这样,
// where fooType was what I wanted to ween out the Foo results on before
// selecting Bar objects.
RealmQuery<Foo> fooRealmQuery = realm
.where(Foo.class)
.equalTo("fooType", "desired type")
.or()
.equalTo("fooType", "other type");
RealmResults<Foo> fooList = fooRealmQuery.findAll();
List<Bar> barList = new ArrayList<Bar>();
for (Foo foo : fooList) {
Bar bar = foo.getBar();
if (!barList.contains(bar)) {
barList.add(bar);
Log.d(TAG, "added " + bar.getName());
} else {
Log.d(TAG, "I already had that bar");
}
}
adapter = new BarAdapter(this, barList);
listView.setAdapter(adapter);
现在情况很好。此外,Realm足够快,我可以正确查询,因为我正在创建适配器,我发现没有性能滞后:)
答案 1 :(得分:0)
目前无法使用当前的RealmBaseAdapter
询问您的情况,至少在您想要从Foo查询中显示Bar对象时也是如此。
如果您不想保持从Bar到Foo的关系,我建议您创建RealmAdapter
,而不是过滤您想要显示的Bar对象的Foo查询。 RealmBaseAdapter
包含非常少的代码,因此定制相当容易:RealmBaseAdapter.java