老师我又来了
来源:4-6 主界面底部导航栏封装-1
 
			慕用1394343
2019-03-30
这次问题是关于DiffUiDataCallback 这个类
    // 两个类是否就是同一个东西,比如Id相等的User
    @Override
    public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
        Log.e("TAB","测试位置旧:" + oldItemPosition);
        Log.e("TAB","测试位置新:" + newItemPosition);
        T beanOld = mOldList.get(oldItemPosition);
        T beanNew = mNewList.get(newItemPosition);
        Log.e("TAB","id对比为:" + beanNew.isSame(beanOld));
        return beanNew.isSame(beanOld);
    }
}
假如我第一次刷新,旧数据0,新数据4个 ,当我第二次刷新时(数据没有更改), 我发现areItemsTheSame这个方法执行了8次   位置信息从0到3 ,然后又从3到0,      咋会来回执行两遍
写回答
	1回答
- 
				
				这个东西,说实话,内部是使用的:Myers 算法来进行的;简单来说: - 先进行数量对比:得出增加、删除 
- 同长度对比,相互俩俩对比,得出相互的位移 
 给你找了一篇文章:https://blog.jcoglan.com/2017/02/12/the-myers-diff-algorithm-part-1/ 内部的算法来说就比较复杂了,我如果在这里来说无异于是班门弄斧了;哈哈。可以看看相关文章哈。 012019-04-01
相似问题
