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 拖動排序 左右滑動刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.