删除显示在 RecyclerView 中的 RealmObject
Delete RealmObject displayed in a RecyclerView
我想将一些 RealmObjects(ideas) 从 RealmList (ideaList) 显示到 Recyclerview。听起来很简单。但是当我尝试删除一个对象时,当我进行查询时(从特定用户那里获取所有想法)
代码示例:
查询:
public RealmList<Idea> getIdeaListFromRealm(Context ctx) {
realm = Realm.getInstance(ctx);
RealmQuery<Idea> ideaQuery = realm.where(Idea.class);
RealmResults<Idea> ideaQueryResults = ideaQuery.equalTo("owner.id",""+LoginFragment.loggedOwner.getId()).findAll();
RealmList<Idea> ideaList = new RealmList<>();
ideaList.addAll(ideaQueryResults);
return ideaList;
}
删除(点击时)
:
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
realm.beginTransaction();
ideaList.remove(position);
notifyDataSetChanged();
realm.commitTransaction();
fragmentStateHandler.replaceFrag(Frag.ARCHIVEFRAGMENT);
}
});
我想我没有正确删除它。不可能有其他原因,因为它在删除后仍然存在于查询中。
我做错了什么?提前致谢
您正在 删除 对象 RealmList
,它根本没有保留。
您必须从结果中删除 对象或直接遍历对象实例。例如
realm.beginTransaction();
ideaQueryResults.remove(position);
// alternatively:
Idea idea = ideaQueryResults.get(position);
idea.removeFromRealm();
realm.commitTransaction();
// from the docs: it will always be more efficient to
// use the more specific change events if you can.
// Rely on notifyDataSetChanged() as a last resort.
notifyItemRemoved(position);
我想将一些 RealmObjects(ideas) 从 RealmList (ideaList) 显示到 Recyclerview。听起来很简单。但是当我尝试删除一个对象时,当我进行查询时(从特定用户那里获取所有想法)
代码示例:
查询:
public RealmList<Idea> getIdeaListFromRealm(Context ctx) {
realm = Realm.getInstance(ctx);
RealmQuery<Idea> ideaQuery = realm.where(Idea.class);
RealmResults<Idea> ideaQueryResults = ideaQuery.equalTo("owner.id",""+LoginFragment.loggedOwner.getId()).findAll();
RealmList<Idea> ideaList = new RealmList<>();
ideaList.addAll(ideaQueryResults);
return ideaList;
}
删除(点击时) :
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
realm.beginTransaction();
ideaList.remove(position);
notifyDataSetChanged();
realm.commitTransaction();
fragmentStateHandler.replaceFrag(Frag.ARCHIVEFRAGMENT);
}
});
我想我没有正确删除它。不可能有其他原因,因为它在删除后仍然存在于查询中。
我做错了什么?提前致谢
您正在 删除 对象 RealmList
,它根本没有保留。
您必须从结果中删除 对象或直接遍历对象实例。例如
realm.beginTransaction();
ideaQueryResults.remove(position);
// alternatively:
Idea idea = ideaQueryResults.get(position);
idea.removeFromRealm();
realm.commitTransaction();
// from the docs: it will always be more efficient to
// use the more specific change events if you can.
// Rely on notifyDataSetChanged() as a last resort.
notifyItemRemoved(position);