没有公共RealmResults <e>构造函数?

时间:2015-04-24 16:05:02

标签: java android realm

我有一张Realm Objects我正在呼叫Foo的表格。 其中一列Foo指向另一列Realm ObjectBar。 我想查询表Foo并挑选出我需要的所有Bar个对象,然后将它们添加到RealmBaseAdapter

但是,据我所知,RealmBaseAdapter只在其构造函数中包含RealmResults列表。 如何在不查询RealmResults表格的情况下形成Bar Bar? 或者,我如何查询Foo表并返回RealmResults Bar

例如,假设您有一张产品和产品细分表,例如:大米krispies,玉米片,水果圈都属于谷物产品细分市场。我希望按照一些规范查询产品表,并列出结果中包含的所有产品细分。

2 个答案:

答案 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