Android BaseRecyclerViewAdapterHelper拖動和側滑刪除

1.適配器


adapter繼承BaseItemDraggableAdapte

public class ItemDragAdapter  extends BaseItemDraggableAdapter<BsInventoryBeanSub, BaseViewHolder> {
    //BsInventoryBeanSub是我的Bean類
    public ItemDragAdapter(List<BsInventoryBeanSub> data) {
        super(R.layout.layout_instock_sub_item,data);
    //R.layout.layout_instock_sub_item爲佈局文件
    }

    @Override
    protected void convert(BaseViewHolder holder, BsInventoryBeanSub inStockBeanSub) {
    //填充數據
        holder.setText(R.id.barCodeTv, inStockBeanSub.getBarCode());
        holder.setText(R.id.qtyTv, inStockBeanSub.getNum());//數量
    }
     //綁定數據
    public void bindData(Collection<BsInventoryBeanSub> data) {
        if (data != null) {
            mData = new ArrayList<>(data);
            notifyDataSetChanged();
        }
    }
    //替換數據,更新界面
    public void updateData(List<BsInventoryBeanSub> list) {
        mData.clear();
        mData.addAll(list);
        notifyDataSetChanged();
    }
}

2.佈局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:background="#fff"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/barCodeTv"
        android:background="@drawable/border"
        android:layout_width="0dp"
        android:textSize="14dp"
        android:layout_height="match_parent"
        android:layout_weight="4"
        android:layout_gravity="center"
        android:gravity="center"
        />
    <TextView
        android:id="@+id/qtyTv"
        android:layout_weight="2"
        android:background="@drawable/border"
        android:layout_gravity="center_vertical"
        android:gravity="center"
        android:textSize="14dp"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</LinearLayout>

3.Activity代碼

拖拽和滑動刪除的回調方法

OnItemDragListener onItemDragListener = new OnItemDragListener() {
    @Override
    public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos){}
    @Override
    public void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to) {}
    @Override
    public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos) {}
}

OnItemSwipeListener onItemSwipeListener = new OnItemSwipeListener() {
    @Override
    public void onItemSwipeStart(RecyclerView.ViewHolder viewHolder, int pos) {}
    @Override
    public void clearView(RecyclerView.ViewHolder viewHolder, int pos) {}
    @Override
    public void onItemSwiped(RecyclerView.ViewHolder viewHolder, int pos) {
    //側滑刪除可以在這裏進行數據更新
      ToastUtils.showShort(mInstockSubBeanList.get(pos).getBarCode()+"刪除成功");
            BsInventoryPDDDaoImpl.deleteInstockSub(mInstockSubBeanList.get(pos));
        mInstockSubBeanList = BsInventoryPDDDaoImpl.findAllInstockSubNyBillNo(mInstockBean);
        mAdapter.updateData(mInstockSubBeanList);

}
};
Adapter設置
//設置數據源
mAdapter = new ItemDragAdapter(mInstockSubBeanList);

ItemDragAndSwipeCallback itemDragAndSwipeCallback = new ItemDragAndSwipeCallback(mAdapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
//設置RecyclerView
itemTouchHelper.attachToRecyclerView(mInvSubRecyclerView);

// 開啓拖拽
mAdapter.enableDragItem(itemTouchHelper, R.id.barCodeTv, true);
mAdapter.setOnItemDragListener(onItemDragListener);

// 開啓滑動刪除
mAdapter.enableSwipeItem();
mAdapter.setOnItemSwipeListener(onItemSwipeListener);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章