【发布时间】:2018-12-06 08:33:28
【问题描述】:
我有一个 recyclerview,它显示了我的 sqlite 数据库中的数据。用户可以选择删除单个项目或删除所有项目,这意味着从 sqlite db 中删除项目并从 recyclerview 中删除项目。删除单个项目效果很好。
clear all 效果不好。这些项目已从表格中删除,但 recyclerview 仍然显示这些项目,我什至仍然可以点击它们。当我重新启动活动时,recyclerview 是空的。
public void updateDataSet(){
db = new DBHandler(context);
db.deleteUserBasket(username);
ItemList = db.getAllItems(userName);
notifyDataSetChanged();
}
这是我要求清除所有内容的原始方法,它确实有效,但现在它没有从 recyclerView 中删除项目。
我也试过了
public void deleteDataSet(){
db = new DBHandler(context);
ItemList = db.getAllUserCartItems(userName);
int size = cartItemList.size();
db.deleteUserBasket(userName);
notifyItemRangeRemoved(0,size);
}
这两个方法都被调用了,我已经通过了它们,但是通知方法似乎没有做任何事情。
db.deleteUserBasket(userName);
cartItemList = db.getAllUserCartItems(userName);
basketOrderAdapter = new BasketOrderAdapter(getApplicationContext(),cartItemList,userName);
basketOrderAdapter.notifyDataSetChanged();
这是我试过的别的东西,此时cartItemList是空的,调试说size = 0;
这也是一样,物品还在我的视野中
【问题讨论】:
-
ItemList = db.getAllItems(userName);在通知数据更改之前,您应该使用新列表更新您的适配器。
-
@DeividasStrioga 检查我的编辑,我添加了另一个失败的尝试
-
如果你想以这种方式重新创建适配器,那么在 basketOrderAdapter = new BasketOrderAdapter(getApplicationContext(),cartItemList,userName); 之后将此适配器设置为recyclerview。另一方面,我会在适配器本身上为新数据添加一个设置器。这样您就不必重新创建适配器。
-
重新创建适配器不是我的最终目标。这只是我尝试过但没有奏效的东西。我会尝试一个二传手,看看它是否有帮助,谢谢。为 RV 设置新适配器时,旧适配器会怎样?
-
如果不行,请分享适配器代码。
标签: android android-recyclerview