package com.chad.baserecyclerviewadapterhelper; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; import android.view.View; import com.chad.baserecyclerviewadapterhelper.adapter.ItemDragAdapter; import com.chad.baserecyclerviewadapterhelper.base.BaseActivity; import com.chad.baserecyclerviewadapterhelper.util.ToastUtils; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.callback.ItemDragAndSwipeCallback; import com.chad.library.adapter.base.listener.OnItemDragListener; import com.chad.library.adapter.base.listener.OnItemSwipeListener; import java.util.ArrayList; import java.util.List; /** * https://github.com/CymChad/BaseRecyclerViewAdapterHelper */ public class ItemDragAndSwipeUseActivity extends BaseActivity { private static final String TAG = ItemDragAndSwipeUseActivity.class.getSimpleName(); private RecyclerView mRecyclerView; private List<String> mData; private ItemDragAdapter mAdapter; private ItemTouchHelper mItemTouchHelper; private ItemDragAndSwipeCallback mItemDragAndSwipeCallback; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_touch_use); setBackBtn(); setTitle("ItemDrag And Swipe"); mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mData = generateData(50); OnItemDragListener listener = new OnItemDragListener() { @Override public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos) { Log.d(TAG, "drag start"); BaseViewHolder holder = ((BaseViewHolder) viewHolder); // holder.setTextColor(R.id.tv, Color.WHITE); } @Override public void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to) { Log.d(TAG, "move from: " + source.getAdapterPosition() + " to: " + target.getAdapterPosition()); } @Override public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos) { Log.d(TAG, "drag end"); BaseViewHolder holder = ((BaseViewHolder) viewHolder); // holder.setTextColor(R.id.tv, Color.BLACK); } }; final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setTextSize(20); paint.setColor(Color.BLACK); OnItemSwipeListener onItemSwipeListener = new OnItemSwipeListener() { @Override public void onItemSwipeStart(RecyclerView.ViewHolder viewHolder, int pos) { Log.d(TAG, "view swiped start: " + pos); BaseViewHolder holder = ((BaseViewHolder) viewHolder); // holder.setTextColor(R.id.tv, Color.WHITE); } @Override public void clearView(RecyclerView.ViewHolder viewHolder, int pos) { Log.d(TAG, "View reset: " + pos); BaseViewHolder holder = ((BaseViewHolder) viewHolder); // holder.setTextColor(R.id.tv, Color.BLACK); } @Override public void onItemSwiped(RecyclerView.ViewHolder viewHolder, int pos) { Log.d(TAG, "View Swiped: " + pos); } @Override public void onItemSwipeMoving(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive) { canvas.drawColor(ContextCompat.getColor(ItemDragAndSwipeUseActivity.this, R.color.color_light_blue)); // canvas.drawText("Just some text", 0, 40, paint); } }; mAdapter = new ItemDragAdapter(mData); mItemDragAndSwipeCallback = new ItemDragAndSwipeCallback(mAdapter); mItemTouchHelper = new ItemTouchHelper(mItemDragAndSwipeCallback); mItemTouchHelper.attachToRecyclerView(mRecyclerView); //mItemDragAndSwipeCallback.setDragMoveFlags(ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT | ItemTouchHelper.UP | ItemTouchHelper.DOWN); mItemDragAndSwipeCallback.setSwipeMoveFlags(ItemTouchHelper.START | ItemTouchHelper.END); mAdapter.enableSwipeItem(); mAdapter.setOnItemSwipeListener(onItemSwipeListener); mAdapter.enableDragItem(mItemTouchHelper); mAdapter.setOnItemDragListener(listener); // mRecyclerView.addItemDecoration(new GridItemDecoration(this ,R.drawable.list_divider)); mRecyclerView.setAdapter(mAdapter); // mRecyclerView.addOnItemTouchListener(new OnItemClickListener() { // @Override // public void onSimpleItemClick(final BaseQuickAdapter adapter, final View view, final int position) { // ToastUtils.showShortToast("点击了" + position); // } // }); mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { ToastUtils.showShortToast("点击了" + position); } }); } private List<String> generateData(int size) { ArrayList<String> data = new ArrayList<>(size); for (int i = 0; i < size; i++) { data.add("item " + i); } return data; } }