android realm删除对象,在android中过滤Realm对象

所以我开始使用Realm,一切正常,几乎所有东西.

我正在使用MultiAutoCompleteTextView来选择一些用户(RealmObject)

所以这里:

这是我的Filter(我的适配器的内部类)

private class UserFilter extends Filter {

@Override

protected FilterResults performFiltering(CharSequence constraint) {

FilterResults filterResults = new FilterResults();

if (constraint == null || constraint.length() == 0) {

filterResults.values = mUsers;

filterResults.count = mUsers.size();

} else {

final String lastToken = constraint.toString().toLowerCase();

final List list = new ArrayList<>();

RealmQuery query = realm.where(User.class);

query.contains("nickname", lastToken, false);

RealmResults result = query.findAll();

list.addAll(result);

filterResults.values = list;

filterResults.count = list.size();

}

return filterResults;

}

@Override

protected void publishResults(CharSequence constraint, FilterResults results) {

mFilteredUsers = (List) results.values;

if (results.count > 0) {

notifyDataSetChanged();

} else {

notifyDataSetInvalidated();

}

}

在我的适配器中:

在getView方法中:

EGCUser user = getItem(position);

holder.mName.setText(user.getNickname());

用户是一个无效的对象,我一直在尝试这么多不同的东西,一切都失败了.

所以我想知道我能做到的是什么.

我有很多线程问题所以也许这是内部类的问题?

谢谢

编辑:在这种情况下,我应该在哪里做Realm.getInstance()?

现在,我在我的适配器中传递一个上下文,我在适配器的构造函数中执行它,并且我在变量中存储了realm对象.

编辑2:我得到了它的工作,但我不知道这是否是我们应该做的:

在我的performFiltering中,我这样做了:

((Activity)mContext).runOnUiThread(new Runnable() {

@Override

public void run() {

final List list = new ArrayList<>();

Realm realm = Realm.getInstance(mContext);

RealmQuery query = realm.where(User.class);

query.contains("nickname", lastToken, false);

RealmResults result1 = query.findAll();

list.addAll(result1);

filterResults.values = list;

filterResults.count = list.size();

}

});

但我会公开反馈.

解决方法:

来自境界的基督徒在这里.不幸的是,由于我们的线程限制,Realm目前不支持Filter类(并且Filter在后台线程上执行它的工作).我们在TODO上有它,你可以在这里跟进:https://github.com/realm/realm-android-adapters/issues/79

在此之前,您有两种选择:

1)执行过滤UI线程.如果您在Realm中没有那么多项,或者查询相对简单,您可能会发现这很快.我们已经有使用Realm的键盘应用程序,这样做.

2)不要返回正确的Realm对象,而是读取需要显示的任何数据,并从performFiltering()方法返回该数据.

标签:android,filter,adapter,realm

来源: https://codeday.me/bug/20190623/1274294.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值