http://blog.csdn.net/chenliguan/article/details/52809758
http://www.jianshu.com/p/654dac931667
除了adapter.notifyDataSetChanged()这个方法之外,新的Adapter还提供了其他的方法,如下:
//刷新所有 public final void notifyDataSetChanged(); //position数据发生了改变,那调用这个方法,就会回调对应position的onBindViewHolder()方法了 public final void notifyItemChanged(int position); //刷新从positionStart开始itemCount数量的item了(这里的刷新指回调onBindViewHolder()方法) public final void notifyItemRangeChanged(int positionStart, int itemCount); //在第position位置被插入了一条数据的时候可以使用这个方法刷新,注意这个方法调用后会有插入的动画,这个动画可以使用默认的,也可以自己定义 public final void notifyItemInserted(int position); //从fromPosition移动到toPosition为止的时候可以使用这个方法刷新 public final void notifyItemMoved(int fromPosition, int toPosition); //批量添加 public final void notifyItemRangeInserted(int positionStart, int itemCount); //第position个被删除的时候刷新,同样会有动画 public final void notifyItemRemoved(int position); //批量删除 public final void notifyItemRangeRemoved(int positionStart, int itemCount);RecyclerView做了一个notifyItemChanged()的操作,功能都顺利实现,问题当前Item闪烁,QA甚至为此提了Bug。
闪烁主要由于RecyclerView使用的默认的动画导致的,所以解决的方法就是修改默认的动画。
只要设置为false,就可以不显示动画了,也就解决了闪烁问题。 关键代码:
((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);http://stackoverflow.com/questions/31897469/override-animation-for-notifyitemchanged-in-recyclerview-adapter
