从arraylist中删除数据时,Recyclerview无法正确更新行?

时间:2016-10-14 10:18:23

标签: android android-recyclerview recycler-adapter

我的RecyclerView包含单击删除时的文本和删除按钮特定行将从ArrayList中删除

                pending.remove(p);// pending is arraylist
通过调用RecyclerView

中的此函数,在更新Adapter之后

swap(pending);

public void swap(ArrayList<DownloadingActivity.scheduleListType> newList) { if (pendingList != null) { pendingList.clear(); pendingList.addAll(newList); } else { pendingList = newList; } notifyDataSetChanged(); }

但问题是从ArrayList 待处理成功删除了正确的项目,但在RecyclerView上显示错误的更新。

如果我从阵列列表待处理中删除第二项,但在RecyclerView中更新了 删除的项目是最后一个 重新加载活动时,RecyclerView中的值正确显示

搜索了很多关于它但未找到任何解决方法

1 个答案:

答案 0 :(得分:2)

使用swap()删除数组列表中的项目并将它们添加回不同的数组列表的Instaead,我建议您在适配器中使用notifyItemRemoved。所以,你的适配器将如下所示。

RecyclerViewAdapter.java:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    DownloadingActivity.scheduleListType> p = pendingList.get(position);
     //....
     //....

    holder.deleteBnt.setOnClickListner(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           pendingList.remove(p);
           notifyItemRemoved(position)
       }
    })
}