android - 如何删除房间持久性中的多个实体/对象
问题描述
我使用滑动来删除我的 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 之后)出错了。它删除了最后一个刷过的对象,需要删除所有刷过的对象。
解决方案
所以你必须创造这样的东西
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
那个存储被换出的项目。接下来列表被清除。
推荐阅读
- python - VSCode 中的 Python/Jupyter 笔记本没有使用正确的环境
- sql - 当每个公司拥有超过 1 部电话时,显示 1 个电话属性
- python - 带有 Python 函数 len() 的 Openpyxl 没有返回正确的长度值
- javascript - 无法通过 auth.onAuthStateChanged 中的 currentUser 访问 displayName - Firebase
- javascript - 使用 JavaScript / jQuery 创建基于 CSS 类的嵌套列表
- python - 如果另一列不包含熊猫中的特定文本,则基于列删除重复项
- react-beautiful-dnd - React-beautiful-dnd - 尝试在拖动列时添加或删除 Draggable... 警告
- ios - 之后更改 StackView 元素的高度
- c# - EPPlus - 数据透视表如何将值显示为总计的百分比
- sql - Postgresql 等价于这个基于 UUID 的函数