Android仿QQ侧滑删除-ListView
第一步:
导依赖:
implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0'
导完依赖后要在buildTypes下添加一个
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
第二步:
先把我们的item布局贴出来:
<ListView
android:id="@+id/lsv_side_slip_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
第三步:
在Activity中定义方法写对应的每个数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sideslip);
initView();// 控件初始化
setData();// 初始化模拟数据
setAdapter();// 创建adapter,listview设置adapter
setListeners();// 设置监听
}
- 控件初始化:
private void initView() {
mLsvSideSlipDelete = (ListView) findViewById(R.id.lsv_side_slip_delete);
}
- 初始化模拟数据:
private void setData() {
for (int i = 0; i < 16; i++) {
list.add("侧滑删除" + (i + 1));
}
}
- 创建adapter,ListView设置adapter
private void setAdapter() {
adapter = new SideSlipAdapter(this, list);
mLsvSideSlipDelete.setAdapter(adapter);
}
- 设置监听
private void setListeners() {
if (adapter != null) {
// 注册监听器,回调用来刷新数据显示
adapter.setDelItemListener(new SideSlipAdapter.DeleteItem() {
@Override
public void delete(int pos) {
list.remove(pos);
adapter.notifyDataSetChanged();
}
});
}
}
第四步:
适配器当中的布局是:
<?xml version="1.0" encoding="utf-8"?>
<com.mcxtzhang.swipemenulib.SwipeMenuLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:clickable="true"
app:swipeEnable="true"
app:leftSwipe="true"
app:ios="true">
<!--展示内容-->
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground"
android:gravity="center"
android:text="项目中我是任意复杂的原ContentItem布局"/>
<!-- 侧滑菜单选项,这里可以有多个选项。我这里就用了置顶和删除两个选项-->
<Button
android:id="@+id/btnTop"
android:layout_width="60dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:text="置顶"
android:textColor="@android:color/white"/>
<Button
android:id="@+id/btnDelete"
android:layout_width="60dp"
android:background="@android:color/holo_red_dark"
android:layout_height="match_parent"
android:text="删除"
android:textColor="@android:color/white"/>
</com.mcxtzhang.swipemenulib.SwipeMenuLayout>
最后的效果就是这样的了