删除后仍在recyclerView中显示的项目

时间:2018-06-27 12:32:55

标签: android android-recyclerview

我有一个recyclerview,它显示了我的sqlite数据库中的数据。用户可以选择删除单个项目或删除所有项目,这意味着从sqlite db中删除该项目,然后从recyclerview中删除该项目。删除单个项目效果很好。

清除所有内容均无法正常工作。这些项目已从表中删除,但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);
    }

这两个方法都被调用,我已经逐步介绍了它们,但是似乎notify方法没有做任何事情。

db.deleteUserBasket(userName);

cartItemList = db.getAllUserCartItems(userName);
basketOrderAdapter = new BasketOrderAdapter(getApplicationContext(),cartItemList,userName);
basketOrderAdapter.notifyDataSetChanged();

这是我尝试过的其他方法,此时cartItemList为空,调试显示size = 0;

这也一样,项目仍在我看来

2 个答案:

答案 0 :(得分:1)

一种实现方法是使用刷新的数据创建新适配器,并将其设置为RecyclerView。然后需要notifyDataSetChanged()。

更好的方法是在您的适配器中添加setter方法,在其中设置新列表。之后,您应该调用notifyDataSetChanged()

答案 1 :(得分:0)

似乎您没有从RecyclerView的适配器列表中删除项目。

 ItemList cartItemList= db.getAllUserCartItems(userName);

从数据库返回一个新的更新列表,但这不是您用于适配器的列表。

创建一种在适配器内部设置数据的方法。当您要更新列表时,请勿创建新适配器。

public void setAdapterList(List<Object> newData) {
    this.data = data;
    // or clear and add new data your adapter data
    this.data.clear();
    this.data.addAll(newData);
    // You can also check out DiffUtil library to only change necessary part of your adapter
    // Change adapter as you like with notify methods
    notifyDataSetChanged();
}