删除显示在 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);