首页 > 解决方案 > 如何删除房间持久性中的多个实体/对象

问题描述

我使用滑动来删除我的 RecyclerView 中的对象。因此,如果我向右滑动,我在滑动后首先将其从我的 RecyclerView 中删除,用户必须按下我的垃圾桶才能完全删除它(也从数据库中)。如果我只删除 1 个,一切正常,但如果我滑动更多对象,所有对象都照常从我的屏幕上消失,但我的数据库只是删除了最后一个。我想让它删除所有刷过的对象。

我搜索了其他答案,但我只能找到删除全部或单个。我想我必须拿着我的对象,然后在按下我的垃圾桶时一次全部删除。就是想不通。

private void deletePerson(final oPerson person) {
     oPersonList.remove(person);
     personsAdapter.notifyDataSetChanged();

     Toast toast = Toast.makeText(getApplicationContext(), "Press the 
     trashcan for confirm.", Toast.LENGTH_LONG);
     toast.show();

     //DELETE A PERSON FOREVER DATABSE
     deletePersonIcon.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             plannerRepository.deletePerson(person);
             Toast toast = Toast.makeText(getApplicationContext(), 
             "Deleted.", Toast.LENGTH_LONG);
             toast.show();
         }
     });
}

所以我希望第一部分是相同的,oPersonList.remove(); 工作完美。只有第二部分(在 DELETE A PERSON 之后)出错了。它删除了最后一个刷过的对象,需要删除所有刷过的对象。

标签: androidandroid-roomswipe

解决方案


所以你必须创造这样的东西

    private List itemsToDelete = new ArrayList<oPerson>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view);

    //DELETE A PERSON FOREVER DATABSE
    deletePersonIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for(int i = 0; i < itemsToDelete.size(); ++i){
                oPerson personToDelete = itemsToDelete.get(i);
                plannerRepository.deletePerson(personToDelete);
            }
            itemsToDelete.clear();
        }
    });
}

private void deletePerson(final oPerson person) {
    itemsToDelete.add(person)
    oPersonList.remove(person);
    personsAdapter.notifyDataSetChanged();

    Toast toast = Toast.makeText(getApplicationContext(), "Press the trashcan for confirm.", Toast.LENGTH_LONG);
    toast.show();
}

正如你所看到的,点击监听器应该只添加一次,接下来我们只需遍历itemsToDelete那个存储被换出的项目。接下来列表被清除。


推荐阅读