在Realm数据库中过滤 - findAll不适用于包含boolean的查询

cha*_*nga 1 android boolean filter realm

我有一个包含具有一个布尔属性的对象的Realm数据库.在整个应用程序中,我需要一次过滤数据库的所有内容,这完全正常.

在另一个活动中,我只需要通过数据库中的对象进行过滤,这些对象的布尔值设置为true.但它不起作用,它仍然可以过滤所有对象.

你能检查我的代码并试着告诉我,我做错了吗?

favourites = realm.where(MyObject.class).equalTo("isFavourite", true).findAll();

editTextSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (favourites.isEmpty()) {
                return;
            }
            adapter = new ImageAdapter(FavouritesActivity.this, helper.searchInFavourites(s));
            gridView.setAdapter(adapter);
        }
}


OrderedRealmCollection<MyObject> searchInFavourites(CharSequence search) {
    OrderedRealmCollection<MyObject> favourites;
    if (search != null && search.length() > 0) {
        favourites = realm.where(MyObject.class).equalTo("isFavourite", true)
                .contains("name", search.toString(), Case.INSENSITIVE)
                .or()
                .contains("category", search.toString(), Case.INSENSITIVE)
                .or()
                .contains("description", search.toString(), Case.INSENSITIVE).findAll();
    } else {
        favourites = realm.where(Illusion.class).equalTo("isFavourite", true).findAll();
    }
    return favourites;
}
Run Code Online (Sandbox Code Playgroud)

Epi*_*rce 6

favourites = realm.where(MyObject.class)
            .beginGroup() // <--
            .equalTo("isFavourite", true)
            .endGroup() // <--
            .beginGroup() // <--
            .contains("name", search.toString(), Case.INSENSITIVE)
            .or()
            .contains("category", search.toString(), Case.INSENSITIVE)
            .or()
            .contains("description", search.toString(), Case.INSENSITIVE)
            .endGroup() // <--
            .findAll();
Run Code Online (Sandbox Code Playgroud)