package cn.xiaozhibo.com.app.adapter;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
import java.util.Collections;
import java.util.List;
import cn.xiaozhibo.com.kit.bean.EditSortData;
/**
* @author writing
*/
public class EditSortTouchHelperCallBack extends ItemTouchHelper.Callback {
private List<EditSortData> mEditSortDataList;
private EditSortAdapter editSortAdapter;
public EditSortTouchHelperCallBack(List<EditSortData> mEditSortDataList, EditSortAdapter editSortAdapter) {
this.mEditSortDataList = mEditSortDataList;
this.editSortAdapter = editSortAdapter;
}
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.UP|ItemTouchHelper.DOWN|ItemTouchHelper.START|ItemTouchHelper.END;
return makeMovementFlags(dragFlags,0);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getBindingAdapterPosition();
int toPosition = target.getBindingAdapterPosition();
Collections.swap(mEditSortDataList,fromPosition,toPosition);
editSortAdapter.notifyItemMoved(fromPosition,toPosition);
//注
editSortAdapter.notifyItemRangeChanged(Math.min(fromPosition, toPosition), Math.abs(fromPosition - toPosition) +1);
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
}
}
我们的需求是交换Item,但是第0个位置的Item和第8个的Item不一样,交换后( editSortAdapter.notifyItemMoved(fromPosition,toPosition);)还需要调用下面的代码
editSortAdapter.notifyItemRangeChanged(Math.min(fromPosition, toPosition), Math.abs(fromPosition - toPosition) +1);