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