// 在RecyclerView中使用DiffUtil进行优化刷新操作
private class MyAdapter extends RecyclerView.Adapter
private List mData;
// ...
public void setData(List data) {
    // 转换前后数据的差异
    DiffUtil.DiffResult result = DiffUtil.calculateDiff(new MyDiffCallback(mData, data), false);
    mData = data;
    // 使用DiffUtil的结果更新列表
    result.dispatchUpdatesTo(this);
}
// ...
private static class MyDiffCallback extends DiffUtil.Callback {
    private List mOldData, mNewData;
    public MyDiffCallback(List oldData, List newData) {
        mOldData = oldData;
        mNewData = newData;
    }
    @Override
    public int getOldListSize() {
        return mOldData.size();
    }
    @Override
    public int getNewListSize() {
        return mNewData.size();
    }
    // 定义一个判断两个数据是否相等的方法
    @Override
    public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
        return mOldData.get(oldItemPosition).getId() == mNewData.get(newItemPosition).getId();
    }
    // 定义一个判断两个数据内容是否相等的方法
    @Override
    public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
        return mOldData.get(oldItemPosition).equals(mNewData.get(newItemPosition));
    }
}
     
}