平常我们删除列表的某个Item的时候,一般是先调用List的remove方法,然后通过notifyDataSetChanged来刷新列表.代码如下: //这种删除并刷新的方法是没有动画效果的
平常我们删除列表的某个Item的时候,一般是先调用List的remove方法,然后通过notifyDataSetChanged来刷新列表.代码如下:
//这种删除并刷新的方法是没有动画效果的 @Override public void onBindViewHolder(final GoogleViewHolder holder, final int position) { final ItemBean item = items.get(position); holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { items.remove(position); notifyDataSetChanged(); } }); }
然而RecyclerView自带notifyItemRemoved方法不仅可以实现删除功能,而且还有动画效果.然而并没有完,假如仅仅调用notifyItemRemoved的话,删除会出很多问题,比如:点击删除position = 1的Item,实际删除的是下一个,所以我们需要这么做,加上notifyItemRangeChanged这个方法,更新一下列表:
@Override public void onBindViewHolder(final GoogleViewHolder holder, final int position) { final ItemBean item = items.get(position); holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { items.remove(position); notifyItemRemoved(position); notifyItemRangeChanged(position, getItemCount()); } }); }