itemTouchHelper.attachToRecyclerView(mRecycler);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback(){
//同来设置 拖拽移动,或移动删除
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int swiped = ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT;
int dragFlags= ItemTouchHelper.UP | ItemTouchHelper.DOWN;
//第一个参数拖动,第二个删除侧滑
return makeMovementFlags(dragFlags, swiped);
}
//在拖动中不断的回调这个方法
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int oldPosition = viewHolder.getAdapterPosition();
int newPosition = target.getAdapterPosition();
if (oldPosition < newPosition) {
for (int i = oldPosition; i < newPosition; i++) {
// 改变实际的数据集
Collections.swap(list, i, i +1);
}
} else {
for (int i = oldPosition; i > newPosition; i--) {
// 改变实际的数据集
Collections.swap(list, i, i - 1);
}
}
adapter.notifyItemMoved(oldPosition, newPosition);
return false;
}
//处理侧滑
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
list.remove(position);
adapter.notifyItemRemoved(position);
}
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
if (actionState!=ItemTouchHelper.ACTION_STATE_IDLE){
viewHolder.itemView.setBackgroundColor(Color.parseColor("#303F9F"));
}
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
viewHolder.itemView.setBackgroundColor(Color.TRANSPARENT);
}
});
RecyclerView 拖动排序 左右滑动删除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.