前景
公司App中有许多功能需要用到条件筛选功能,每次写起来都十分费时,而且逻辑不统一且容易出错。所以就在想能不能“构建高复用的搜索筛选项”(就是想lan一下)。
提要求
- 筛选项可动态改变(添加、删除等)
- 统一的交互方式
- 集成简单
- 有一些默认筛选项实现(单选、多选、复合选、区域等)
- UI可定制(优先级低)
- 就是要用的爽!!!
- ...
YY一下
- 自定义一些协议(Tab协议、子筛选项协议...)
- 筛选项所有可变的都通过协议让调用方实现
- 所有的交互都封装在内部
- 暴露很多自定义属性(UI自定义)
- 咋让你爽呢???
- ...
来段伪码
SearchFilterLayout(筛选View)
//添加筛选项
addTab(ITabFilter)
ITabFilter(每个子筛选项都必须实现的协议)
//获取筛选View
View getView();
//获取选中条件
FilterItemModel getSelectFilterData();
//设置选中项
void setSelectFilterDate(FilterItemModel);
//清空选中项
void cleanSelectFilter();
//其他可扩展的
...
FilterItemModel(统一的每个筛选的数据model)
//名称
String name;
//id
int code;
//其他
...
还有啥
这仅仅是个开始….完整代码见后续!!!
效果如下:
95b6x-6keix.gif
后记
实战来了,欢迎点击:构建高复用的搜索筛选项(实现篇)