属性介绍
mode
打开模式分为三种:
- :抽屉模式,主布局与抽屉布局同时移动
- :覆盖模式,仅抽屉布局移动
- :固定模式,仅主布局移动
open
初始化状态,默认打开指定方向:
- :默认打开Left
- :默认打开Top
- :默认打开Right
- :默认打开Bottom
mask
背景遮罩:
- :不开启
- :固定遮罩颜色
- :遮罩逐渐深浅
mainLayout
指定主布局ID:
- 若未指定该属性,则默认为第一个未指定ID的子布局
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mainLayout="@+id/mainDrawer">
<RelativeLayout
android:id="@+id/mainDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000" />
...
</cn.leaqi.drawer.SwipeDrawer>
leftLayout
指定Left布局ID:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftLayout="@+id/leftDrawer">
<RelativeLayout
android:id="@+id/leftDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000" />
...
</cn.leaqi.drawer.SwipeDrawer>
topLayout
指定Top布局ID:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:topLayout="@+id/topDrawer">
<RelativeLayout
android:id="@+id/topDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000" />
...
</cn.leaqi.drawer.SwipeDrawer>
rightLayout
指定Right布局ID:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rightLayout="@+id/rightDrawer">
<RelativeLayout
android:id="@+id/rightDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000" />
...
</cn.leaqi.drawer.SwipeDrawer>
bottomLayout
指定Bottom布局ID:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:bottomLayout="@+id/bottomDrawer">
<RelativeLayout
android:id="@+id/bottomDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000" />
...
</cn.leaqi.drawer.SwipeDrawer>
mainType
主布局类型:
- :非滑动布局,默认为该项
- :垂直滑动布局,必须是直属子级,子子级用指定ID
- :水平滑动布局,必须是直属子级,子子级用指定ID
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mainLayout="@+id/mainDrawer"
app:mainType="scrollY">
<ScrollView
android:id="@+id/mainDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
...
</ScrollView>
...
</cn.leaqi.drawer.SwipeDrawer>
leftType
Left布局类型:
- :非滑动布局,默认为该项
- :垂直滑动布局,必须是直属子级,子子级用指定ID
- :水平滑动布局,必须是直属子级,子子级用指定ID
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftLayout="@+id/leftDrawer"
app:leftType="scrollY">
<HorizontalScrollView
android:id="@+id/leftDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
...
</HorizontalScrollView>
...
</cn.leaqi.drawer.SwipeDrawer>
topType
Top布局类型:
- :非滑动布局,默认为该项
- :垂直滑动布局,必须是直属子级,子子级用指定ID
- :水平滑动布局,必须是直属子级,子子级用指定ID
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:topLayout="@+id/topDrawer"
app:topType="scrollY">
<ScrollView
android:id="@+id/topDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
...
</ScrollView>
...
</cn.leaqi.drawer.SwipeDrawer>
rightType
Right布局类型:
- :非滑动布局,默认为该项
- :垂直滑动布局,必须是直属子级,子子级用指定ID
- :水平滑动布局,必须是直属子级,子子级用指定ID
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rightLayout="@+id/rightDrawer"
app:rightType="scrollY">
<HorizontalScrollView
android:id="@+id/rightDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
...
</HorizontalScrollView>
...
</cn.leaqi.drawer.SwipeDrawer>
bottomType
Bottom布局类型:
- :非滑动布局,默认为该项
- :垂直滑动布局,必须是直属子级,子子级用指定ID
- :水平滑动布局,必须是直属子级,子子级用指定ID
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:bottomLayout="@+id/bottomDrawer"
app:bottomType="scrollY">
<ScrollView
android:id="@+id/bottomDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
...
</ScrollView>
...
</cn.leaqi.drawer.SwipeDrawer>
leftMode
- 该属性指定Left方向打开模式
- 不设置则继承的打开方式
topMode
- 该属性指定Top方向打开模式
- 不设置则继承的打开方式
rightMode
- 该属性指定Right方向打开模式
- 不设置则继承的打开方式
bottomMode
- 该属性指定Bottom方向打开模式
- 不设置则继承的打开方式
mainOpen
打开后主布局触摸事件:开启遮罩后该属性设置将无效
- :不屏蔽
- :只允许点击
- :禁止所有触摸事件
parentDrawer
指定上一级的布局ID,嵌套时使用:更多层嵌套以此内推
<cn.leaqi.drawer.SwipeDrawer
android:id="@+id/rootSwipe"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mainLayout="@+id/mainDrawer">
<RelativeLayout
android:id="@+id/mainDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mainLayout="@+id/sonMainDrawer"
app:parentDrawer="@+id/rootSwipe">
<RelativeLayout
android:id="@+id/sonMainDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3F51B5" />
...
</cn.leaqi.drawer.SwipeDrawer>
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
mainScroll
指定主布局下滑动布局ID:子布局存在滑动布局,且滑动方向与一致时需设置该属性解决滑动优先级的问题
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mainLayout="@+id/mainDrawer"
app:mainScroll="@+id/mainScroll">
<RelativeLayout
android:id="@+id/mainDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/mainScroll"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
leftScroll
指定Left布局下滑动布局ID:子布局存在滑动布局,且滑动方向与一致时需设置该属性解决滑动优先级的问题
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftLayout="@+id/leftDrawer"
app:leftScroll="@+id/leftScroll">
<RelativeLayout
android:id="@+id/leftDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:id="@+id/leftScroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</HorizontalScrollView>
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
topScroll
指定Top布局下滑动布局ID:子布局存在滑动布局,且滑动方向与一致时需设置该属性解决滑动优先级的问题
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:topLayout="@+id/topDrawer"
app:topScroll="@+id/topScroll">
<RelativeLayout
android:id="@+id/topDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/topScroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</ScrollView>
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
rightScroll
指定Right布局下滑动布局ID:子布局存在滑动布局,且滑动方向与一致时需设置该属性解决滑动优先级的问题
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rightLayout="@+id/rightDrawer"
app:rightScroll="@+id/rightScroll">
<RelativeLayout
android:id="@+id/rightDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:id="@+id/rightScroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</HorizontalScrollView>
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
bottomScroll
指定Bottom布局下滑动布局ID:子布局存在滑动布局,且滑动方向与一致时需设置该属性解决滑动优先级的问题
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:bottomLayout="@+id/bottomDrawer"
app:bottomScroll="@+id/bottomScroll">
<RelativeLayout
android:id="@+id/bottomDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/bottomScroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</ScrollView>
</RelativeLayout>
...
</cn.leaqi.drawer.SwipeDrawer>
leftDragOpen
Left布局拖拽打开:设为后Left布局将无法通过拖拽的方式打开,但关闭不受此限制,默认值为:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftDragOpen="false">
...
</cn.leaqi.drawer.SwipeDrawer>
topDragOpen
Top布局拖拽打开:设为后Top布局将无法通过拖拽的方式打开,但关闭不受此限制,默认值为:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:topDragOpen="false">
...
</cn.leaqi.drawer.SwipeDrawer>
rightDragOpen
Right布局拖拽打开:设为后Right布局将无法通过拖拽的方式打开,但关闭不受此限制,默认值为:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rightDragOpen="false">
...
</cn.leaqi.drawer.SwipeDrawer>
bottomDragOpen
Bottom布局拖拽打开:设为后Bottom布局将无法通过拖拽的方式打开,但关闭不受此限制,默认值为:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:bottomDragOpen="false">
...
</cn.leaqi.drawer.SwipeDrawer>
showLayout
非当前操作的布局是否隐藏,默认为
图为固定模式下,整体布局透明的50%演示
- :显示
- :隐藏
autoClose
打开后是否关闭其他:设为,打开后则会关闭其他为的
- :自动关闭
- :默认值,可同时打开多个
maskClose
点击遮罩后关闭:设为,且开启后点击遮罩背景会关闭当前
- :点击关闭
- :默认值,无操作
maskColor
遮罩颜色:默认值颜色为
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mask="gradual"
app:maskColor="#B3FF0000">
...
</cn.leaqi.drawer.SwipeDrawer>
dragClose
允许拖拽关闭:与、、、拖拽打开同理
设为将无法通过拖拽的方式关闭,但打开不受此限制,默认值为:
<cn.leaqi.drawer.SwipeDrawer
android:layout_width="match_parent"
android:layout_height="match_parent"
app:dragClose="false">
...
</cn.leaqi.drawer.SwipeDrawer>
dragCloseType注:最低版本需 >= 1.4
拖拽关闭类型:限制主布局、抽屉布局、或者全局拖拽关闭,默认值为:
- :全布局
- :主布局
- :抽屉布局
scrollOuterDrag
滑动布局之外是否允许拖拽关闭:抽屉布局各个方向下子滑动布局之外的布局是否允许拖拽关闭,默认值为:
- :任何情况下都允许
- :子滑动布局到顶或到底不可滑动才允许
autoLayout注:最低版本需 >= 1.2
布局自动更新:当布局尺寸发生变化将自动更新,默认值为:
- :自动更新
- :不自动更新
shrinkRange
拖拽距离:
- 拖拽方向高/宽度 除以 ,拖拽到达距离后才会开启或关闭,否则回到原状态
- 默认值为:,拖动方向高/宽度的5分之1
- :可以拖拽,但不会开启或关闭
dragDamping注:版本 >= 1.5 时值范围在0-99,值越大速度越快
拖拽阻力:0-9
- 值越小阻力越大
- 默认值为:,无阻力
dragRange
边缘拖拽:
- 值类型为:,设定后拖拽按下位置必须是dip的边缘位置才可以拖拽
- 默认值为:,全部局拖拽
leftDragRange注:最低版本需 >= 1.5
Left边缘拖拽:
- 值类型为:,设定后拖拽按下位置必须是dip的边缘位置才可以拖拽
- 默认值为:,全部局拖拽
topDragRange注:最低版本需 >= 1.5
Top边缘拖拽:
- 值类型为:,设定后拖拽按下位置必须是dip的边缘位置才可以拖拽
- 默认值为:,全部局拖拽
rightDragRange注:最低版本需 >= 1.5
Right边缘拖拽:
- 值类型为:,设定后拖拽按下位置必须是dip的边缘位置才可以拖拽
- 默认值为:,全部局拖拽
bottomDragRange注:最低版本需 >= 1.5
Bottom边缘拖拽:
- 值类型为:,设定后拖拽按下位置必须是dip的边缘位置才可以拖拽
- 默认值为:,全部局拖拽
leftOffset注:最低版本需 >= 1.5
Left布局偏移:
- 值类型为:,Left布局向外偏移dip,仅模式下有效
- 默认值为:px
topOffset注:最低版本需 >= 1.5
Top布局偏移:
- 值类型为:,Top布局向外偏移dip,仅模式下有效
- 默认值为:px
rightOffset注:最低版本需 >= 1.5
Right布局偏移:
- 值类型为:,Right布局向外偏移dip,仅模式下有效
- 默认值为:px
bottomOffset注:最低版本需 >= 1.5
Bottom布局偏移:
- 值类型为:,Bottom布局向外偏移dip,仅模式下有效
- 默认值为:px
dragSlop注:最低版本需 >= 1.1
拖拽拦截距离:
- 值类型为:,当拖拽距离大于dip时才拦截事件
- 默认值为:px
turnCancel注:最低版本需 >= 1.6
回拽取消操作:
- 值类型为:,当拖拽达到打开或关闭距离时,回拽距离大于时释放后会取消操作
- 默认值为:px
maxDragSize
最大拖拽高/宽度:
- 值类型为:,设定后打开时可拖拽至设定的距离
- 默认值为:,布局高/宽度
duration
动画速度:
- 值类型为:
- 默认值为:
interpolator
动画插值器:
- 减速:
- 匀速:
- 弹球效果:
- 默认值为:先加速再减速
回调接口
OnDrawerState
监听开始、移动、开启、关闭、取消回调
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
swipeDrawer.setOnDrawerState(new OnDrawerState() {
@Override
public void onStart(int type) {
// 拖拽开始时回调
// type 返回当前操作的方向
}
@Override
public void onMove(int type, float progress) {
// 拖拽移动时回调
// type 返回当前操作的方向
// progress 返回打开的进度 0 - 1
}
@Override
public void onOpen(int type) {
// 打开时回调
// type 返回当前操作的方向
}
@Override
public void onClose(int type) {
// 关闭时回调
// type 返回当前操作的方向
}
@Override
public void onCancel(int type) {
// 拖拽未达到打开或关闭距离时回调
// type 返回当前操作的方向
}
});
OnDrawerSwitch
监听开启、关闭回调
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
swipeDrawer.setOnDrawerSwitch(new OnDrawerSwitch() {
@Override
public void onOpen(SwipeDrawer view) {
// 打开时回调
// view 返回当前操作的 SwipeDrawer
}
@Override
public void onClose(SwipeDrawer view) {
// 关闭时回调
// view 返回当前操作的 SwipeDrawer
}
});
OnDrawerChange
监听改变,由参数返回各种状态
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
swipeDrawer.setOnDrawerChange(new OnDrawerChange() {
@Override
public void onChange(SwipeDrawer view, int state, float progress) {
// view 返回当前操作的 SwipeDrawer
// state 返回当前状态
// progress 返回打开的进度 0 - 1
switch (state) {
case SwipeDrawer.STATE_START:
// 拖拽开始时回调
break;
case SwipeDrawer.STATE_OPEN:
// 打开时回调
break;
case SwipeDrawer.STATE_CLOSE :
// 关闭时回调
break;
case SwipeDrawer.STATE_PROGRESS :
// 拖拽移动时回调,progress 获取进度
break;
case SwipeDrawer.STATE_ANIM_OVER:
// 动画执行完毕时回调
break;
case SwipeDrawer.STATE_CALL_OPEN:
// 调用 openDrawer 方法打开时回调
break;
case SwipeDrawer.STATE_CALL_CLOSE:
// 调用 closeDrawer 方法关闭时回调
break;
case SwipeDrawer.STATE_CANCEL:
// 拖拽未达到打开或关闭距离时回调
break;
case SwipeDrawer.STATE_DRAG_INTO:
// 拖拽超过 shrinkRange 距离时回调
break;
case SwipeDrawer.STATE_DRAG_OUT:
// 拖拽未超过 shrinkRange 距离时回调
break;
}
}
});
调用方法
openDrawer
调用打开方法
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
// 打开 Left 方向
swipeDrawer.openDrawer(SwipeDrawer.DIRECTION_LEFT);
// 打开 Top 方向,不使用动画
swipeDrawer.openDrawer(SwipeDrawer.DIRECTION_TOP, false);
// 打开 Right 方向,使用动画,不使用回调接口
swipeDrawer.openDrawer(SwipeDrawer.DIRECTION_RIGHT, true, false);
closeDrawer
调用关闭方法
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
// 关闭已打开的方向
swipeDrawer.closeDrawer();
// 关闭已打开的方向,不使用动画
swipeDrawer.closeDrawer(false);
// 关闭已打开的方向,使用动画,不使用回调接口
swipeDrawer.closeDrawer(true, false);
// 关闭 Left 方向
swipeDrawer.closeDrawer(SwipeDrawer.DIRECTION_LEFT);
// 关闭 Top 方向,不使用动画
swipeDrawer.closeDrawer(SwipeDrawer.DIRECTION_TOP, false);
// 关闭 Right 方向,使用动画,不使用回调接口
swipeDrawer.closeDrawer(SwipeDrawer.DIRECTION_RIGHT, true, false);
toggleDrawer
调用打开或者关闭方法
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
// 打开或者关闭 Left 方向
swipeDrawer.toggleDrawer(SwipeDrawer.DIRECTION_LEFT);
// 打开或者关闭 Top 方向,不使用动画
swipeDrawer.toggleDrawer(SwipeDrawer.DIRECTION_TOP, false);
// 打开或者关闭 Right 方向,使用动画,不使用回调接口
swipeDrawer.toggleDrawer(SwipeDrawer.DIRECTION_RIGHT, true, false);
setIntercept
屏蔽触摸事件
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
// 屏蔽所有方向触摸事件
swipeDrawer.setIntercept(false);
// 屏蔽 Top 方向触摸事件
swipeDrawer.setIntercept(SwipeDrawer.DIRECTION_TOP, false);
// 屏蔽 Left 方向触摸事件
final View leftLayout = findViewById(R.id.leftLayout);
swipeDrawer.setIntercept(leftLayout, false);
drawerLayout注:最低版本需 >= 1.2
更新布局
final SwipeDrawer swipeDrawer = findViewById(R.id.swipeDrawer);
// 在autoLayout关闭的情况下,可调用该方法手动更新布局
swipeDrawer.drawerLayout();
全局方法
setAllIntercept
设置屏蔽所有触摸事件
// 屏蔽所有 SwipeDrawer 触摸事件
SwipeDrawer.setAllIntercept(true);
// 取消屏蔽
SwipeDrawer.setAllIntercept(false);
getAllIntercept
获取触摸事件是否屏蔽
// 获取触摸事件是否被屏蔽
if (SwipeDrawer.getAllIntercept()) {
// 被屏蔽
} else {
// 没屏蔽
}
getParentDrawer
获取view的父级
final View view = findViewById(R.id.view);
SwipeDrawer getSwipeDrawer = SwipeDrawer.getParentDrawer(view);
if (getSwipeDrawer != null) {
// getSwipeDrawer 为 view 的父级 SwipeDrawer
} else {
// 未找到
}
其他
DrawerHolder
类作用是用于下非自动关闭的情况在、等有回收机制的布局保存状态
DrawerHolder类的使用:DrawerHolder drawerHolder = new DrawerHolder();
// drawerItem 传递 item 的 SwipeDrawer 布局
// bindHolder 传递唯一对象 Object
drawerHolder.bindHolder(drawerItem, dataItem);
// 清除已保存的数据,并关闭已打开的 SwipeDrawer
drawerHolder.clearHolder();
// 清除所有已保存的数据
drawerHolder.clear();
ListView调用示例:private class ListAdapter extends ArrayAdapter<String> {
private Context context;
private List<String> list;
private DrawerHolder drawerHolder = new DrawerHolder();
...
@NonNull
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
View view;
ViewHolder viewHolder;
if (convertView == null) {
view = LayoutInflater.from(context).inflate(R.layout.item, null);
viewHolder = new ViewHolder();
viewHolder.item = view.findViewById(R.id.item_drawer);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
// bindHolder 的第一个参数为 SwipeDrawer 传递 item 的 SwipeDrawer 布局
// bindHolder 的第二个参数为 Object 传递唯一对象
drawerHolder.bindHolder(viewHolder.item, list.get(position));
return view;
}
...
private class ViewHolder {
SwipeDrawer item;
}
}
RecyclerView调用示例:private class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> {
private Context context;
private List<String> list;
private DrawerHolder drawerHolder = new DrawerHolder();
...
@NonNull
@Override
public ListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View addView = LayoutInflater.from(context).inflate(R.layout.item, null);
return new ListViewHolder(addView);
}
@Override
public void onBindViewHolder(@NonNull ListViewHolder holder, int position) {
// bindHolder 的第一个参数为 SwipeDrawer 传递 item 的 SwipeDrawer 布局
// bindHolder 的第二个参数为 Object 传递唯一对象
drawerHolder.bindHolder(holder.item, list.get(position));
}
...
private class ListViewHolder extends RecyclerView.ViewHolder {
SwipeDrawer item;
private ListViewHolder(View view) {
super(view);
item = view.findViewById(R.id.item_drawer);;
}
...
}
}