RecyclerView 拖動排序 左右滑動刪除


   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);
        }
    });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章