摘要: RecyclerView notifyItemRemoved
平常我们删除列表的某个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());
}
});
}
© 著作权归作者所有
终极解决办法
http://blog.csdn.net/iamdingruihaha/article/details/73274010