【开源项目】EditAdapter - 在RecyclerView中快速集成列表编辑模式

Cover

EditAdapter

适用于RecyclerView的适配器,快速集成列表编辑模式

项目地址

演示

image

添加EditAdapter到你的项目

  1. 在项目的 build.gradle 中添加:
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
  1. 添加依赖

查看最新版本号

dependencies {
    // 新版基于此库,必须引入
    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50'
    //TAG替换最新版本号
    implementation 'com.github.plain-dev:EditAdapter:TAG'
}

如何使用

  1. 在你的数据实体类中继承SelectedImpl
public class MyDataBean extends SelectedImpl {

    private String title;
    private String content;

    public MyDataBean(String title, String content) {
        this.title = title;
        this.content = content;
    }

    ......
    
}
  1. 创建一个适配器,继承自BaseQuickEditModeAdapter 创建一个适配器,继承自EditAdapter
public class TestEditAdapter extends BaseQuickEditModeAdapter {
    
    ......
      
}
  1. 在构造方法中设置一些数据和属性
public class TestEditAdapter extends BaseQuickEditModeAdapter {

    // 指定布局和数据
    public TestEditAdapter(@Nullable List 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);
    }
}
  1. 数据绑定(和BaseQuickAdapter的使用方法一致)
public class TestEditAdapter extends BaseQuickEditModeAdapter {

    @Override
    protected void convertView(BaseViewHolder helper, TestBean item) {
        helper.setText(R.id.tvTitle, item.getTitle());
    }

}
  1. ActivityFragment中更新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 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;
    }
    

    可以根据接口的要求来实现不同的

  1. 注册事件监听器
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


LICENSE

你可能感兴趣的:(【开源项目】EditAdapter - 在RecyclerView中快速集成列表编辑模式)