【开源项目】EditAdapter - 在RecyclerVie
2020-04-16 本文已影响0人
PlainDev
Cover
添加
EditAdapter
适用于RecyclerView的适配器🚥,快速集成列表编辑模式🧾
演示
image添加EditAdapter
到你的项目
- 在项目的
build.gradle
中添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 添加依赖
dependencies {
// 新版基于此库,必须引入
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50'
//TAG替换最新版本号
implementation 'com.github.plain-dev:EditAdapter:TAG'
}
如何使用
- 在你的数据实体类中继承
SelectedImpl
public class MyDataBean extends SelectedImpl {
private String title;
private String content;
public MyDataBean(String title, String content) {
this.title = title;
this.content = content;
}
......
}
- 创建一个适配器,继承自
BaseQuickEditModeAdapter<T extends ISelected>
创建一个适配器,继承自EditAdapter<T extends ISelected>
public class TestEditAdapter extends BaseQuickEditModeAdapter<TestBean, BaseViewHolder> {
......
}
- 在构造方法中设置一些数据和属性
public class TestEditAdapter extends BaseQuickEditModeAdapter<TestBean, BaseViewHolder> {
// 指定布局和数据
public TestEditAdapter(@Nullable List<TestBean> data) {
super(R.layout.item_test_edit, data);
}
// 指定CheckBox
@Override
public CheckBox getCheckBox(BaseViewHolder helper) {
return helper.getView(R.id.checkBox);
}
// 指定HideView隐藏的区域,一般为CheckBox
@Override
public View getHideView(BaseViewHolder helper) {
return helper.getView(R.id.checkBox);
}
}
- 数据绑定(和BaseQuickAdapter的使用方法一致)
public class TestEditAdapter extends BaseQuickEditModeAdapter<TestBean, BaseViewHolder> {
@Override
protected void convertView(BaseViewHolder helper, TestBean item) {
helper.setText(R.id.tvTitle, item.getTitle());
}
}
- 在
Activity
或Fragment
中更新UI
-
指定模式为
EDIT_MODE
(进入编辑模式)myEditAdapter.changeMode(BaseQuickEditModeAdapter.EDIT_MODE);
-
指定模式为
SHOW_MODE
(退出编辑模式)myEditAdapter.changeMode(BaseQuickEditModeAdapter.SHOW_MODE);
-
全选所有项
myEditAdapter.selectedAllItem();
-
反选所有项
myEditAdapter.unSelectedAllItem();
-
删除选择项
myEditAdapter.removeSelectedItem();
-
判断是否选择全部 (用来判断点击全选按钮🔘时,应该调用
selectedAllItem
还是unSelectedAllItem
)myEditAdapter.isSelectedAllItem()
-
获取删除item所需的参数 (外部实现)
比如删除接口要求,参数为item的
id
用,
号隔开的字符串,可以像下面这么实现,在适配器中重写getDeleteParams
方法@Override public String getDeleteParams() { List<ISelected> selectedList = getSelectedList(); if (!ListUtils.isEmpty(selectedList)) { StringBuilder sb = new StringBuilder(); for (ISelected iSelected : selectedList) { if (iSelected instanceof TestBean) { sb.append(((TestBean) iSelected).getId()).append(","); } } return sb.toString(); } return null; }
可以根据接口的要求来实现不同的
- 注册事件监听器
myEditAdapter.setEditSelectedListener(new IEditSelectedListener() {
//回调当前选中项数量
@Override
public void onSelectedItemCount(int count) {
tvCheckItemCount.setText(String.format("共选中%s项", count));
}
//回调长按进入编辑模式
@Override
public void onLongClickEnterEditMode() {
myEditAdapter.changeMode(BaseQuickEditModeAdapter.EDIT_MODE);
}
});
7、如果使用下拉刷新控件,记得在进入编辑模式后,关闭下拉刷新,以SmartRefreshLayout为例
进入编辑模式后
smartRefreshLayout.setEnableRefresh(false);
退出编辑模式后
smartRefreshLayout.setEnableRefresh(true);
其它
有问题欢迎提交issues
状态图标来源iconfont,侵删
感谢BaseRecyclerViewAdapterHelper,本项目继承自该库,并遵循LICENSE