RecyclerView调用notifyDataSetChanged方法刷新数据后焦点恢复原来的位置
步骤如下:
(1)adapter执行setHasStableIds(true)方法
mListAdapter.setHasStableIds(true); 注意:setHasStableIds需要在setAdapter之前设置,否则报错:java.lang.IllegalStateException: Cannot change whether this adapter has stable IDs while the adapter has registered observers.
(2)RecyclerView的动画必须去掉
mListView.setItemAnimator(null);

(3)重写adapter的getItemId()方法,让每个view都有各自的id
@Override
public long getItemId(int position) {
return position;
}

0