RecyclerView 使用 notifyItemChanged(int position)进行局部刷新时只能刷新可见的部分,不可见的部分刷新不了怎么办?
Week week = new Week();  
week.setWeek(weekList.get(lastShowWeek).getWeek());  //设置第几周
week.setShowWeek(false);  //设置这当前的item是否显示背景色
weekList.set(lastShowWeek,week);
weekAdapter.notifyItemChanged(lastShowWeek);   //lastShowWeek 上次选中的item
week = new Week();
week.setWeek(weekList.get(showWeek-1).getWeek());
week.setShowWeek(true);
weekList.set(showWeek-1,week);
weekAdapter.notifyItemChanged(showWeek-1);      //show-1 为此次选中的item
点击item时,若上次选中的item在可是范围内则可以正常刷新,若上次选中的item不在可视范围内就出现了刷新不成功的问题(上次选中item的背景色不会清除)

/** * Notify any registered observers that the item at <code>position</code> has changed. * Equivalent to calling <code>notifyItemChanged(position, null);</code>. * * <p>This is an item change event, not a structural change event. It indicates that any * reflection of the data at <code>position</code> is out of date and should be updated. * The item at <code>position</code> retains the same identity.</p> * * @param position Position of the item that has changed * * @see #notifyItemRangeChanged(int, int) */ public final void notifyItemChanged(int position) { mObservable.notifyItemRangeChanged(position, 1); }这是方法的说明,下标不要搞错。
其实你传入一个参数的时候,它是更新了当前位置往前的所有内容
如果你下标错了,你可以单独+1,或者-1验证一下即可。
如果内容不多,你可以直接使用notifydatasetChange()