筛选组件PopsTabView
来源:互联网 发布:kg是什么意思网络 编辑:程序博客网 时间:2024/06/03 15:49
PopsTabView
===
PopsTabView是个filter容器,他可以自动,快速,构建不同筛选样式,自由组合成一组tab.
目前版本v1.1
后续筛选会不断完善补充.
项目地址传送门 https://github.com/ccj659/PopsTabView
Show
===
图片如果显示不了,麻烦到项目地址传送门 https://github.com/ccj659/PopsTabView
Introduction
===
用户只需要,知道自己需要哪种filter,将数据转化FilterTabBean
,然后addFilterItem()
,最后自己在onPopTabSet()
回调,即可使用,简单粗暴.
优点:
- 支持用
for()循环
全自动配置,自动记住位置,并在点击时,返回位置以及选取值. - 支持快速,构建不同筛选样式,自由组合成一组filter的tab.
- 支持自定义filter的顺序,选择样式.
- 解决Android版本兼容(解决popwindow显示位置偏差).
- 用接口抽象出filter样式配置器loader,与功能代码解耦.
- 支持自定义配置 筛选过程
ResultLoader<T>
- 可以自由扩展,其他类型的Filter类型.
待完善:
- 增加其他类型的筛选样式
- 回调参数,需待调整
- view的样式可配置为可自定义
- 代码冗余还需优化.
TO USE
===
1.设定,筛选器类型. 将PopTypeLoader
暴露,用于用户 筛选器类型.
需要自己按照该模式进行扩展.创建 具体 popwindow 实体对象. 创建对象和 功能代码解耦和,细节在PopTabView.addItem()
中.若有需要,需要自由扩展,配置.
public class PopTypeLoaderImp implements PopTypeLoader { @Override public PopupWindow getPopEntity(Context context, List data, OnMultipeFilterSetListener filterSetListener, int tag, int type) { PopupWindow popupWindow = null; switch (tag) { case FilterConfig.TYPE_POPWINDOW_LINKED: popupWindow = new LinkFilterPopupWindow(context, data, filterSetListener,type); break; case FilterConfig.TYPE_POPWINDOW_SORT: popupWindow = new SortPopupWindow(context, data, filterSetListener, tag,type); break; default: popupWindow = new MSingleFilterWindow(context, data, filterSetListener,type); break; } return popupWindow; }}
2.使用方式
2.1 Builder模式,完成筛选器的创建.
popTabView.setOnPopTabSetListener(this) .setPopEntityLoader(new PopTypeLoaderImp()) //配置 {筛选类型} 方式 .addFilterItem("筛选1", singleFilterList1.getFilter_tab(), singleFilterList1.getTab_group_type(), FilterConfig.FILTER_TYPE_MUTIFY) .addFilterItem("筛选2", linkFilterList.getFilter_tab(), linkFilterList.getTab_group_type(), FilterConfig.FILTER_TYPE_MUTIFY) .addFilterItem("筛选3", singleFilterList2.getFilter_tab(), singleFilterList2.getTab_group_type(), FilterConfig.FILTER_TYPE_MUTIFY) .addFilterItem("筛选4", sortFilterList.getFilter_tab(), sortFilterList.getTab_group_type(), FilterConfig.FILTER_TYPE_MUTIFY);
2.2 for()循环
全自动配置模式,完成筛选器的创建.
/** * * @param title 筛选标题 * @param data 筛选数据 * @param tag 筛选类别- 一级筛选,二级筛选,复杂筛选 * @param type 筛选方式-单选or多选 * @return */ popTabView.addFilterItem("筛选" + i, singleFilterList1.getFilter_tab(), singleFilterList1.getTab_group_type(), FilterConfig.FILTER_TYPE_SINGLE);
3.配置筛选后的返回值样式ResultLoader<T>
public class ResultLoaderImp implements ResultLoader<String> { @Override public String getResultParamsIds(List<FilterTabBean> selectedList) { StringBuilder stringIds =new StringBuilder(); for (int i = 0; i < selectedList.size(); i++) { stringIds.append(selectedList.get(i).getTab_id()+","); } return builderToString(stringIds); } @Override public String getResultShowValues(List<FilterTabBean> selectedList) { StringBuilder stringValues =new StringBuilder(); for (int i = 0; i < selectedList.size(); i++) { stringValues.append(selectedList.get(i).getTab_name()+","); } return builderToString(stringValues); }
4.成功的回调,可配置为借口传参.此处回调,可以自主修改,扩展.
/** * @param index 操作的 filter的下标号 0.1.2.3 * @param lable 操作的 filter的对应的标签title * @param params 选中的 参数(需要传参) * @param value 选中的 值 */ @Override public void onPopTabSet(int index, String lable, String params, String value) { Toast.makeText(this, "lable=" + index + "\n&value=" + value, Toast.LENGTH_SHORT).show(); tv_content.setText("&筛选项=" + index + "\n&筛选传参=" + params + "\n&筛选值=" + value); }
样式调整–待优化
1.可在各级Adapter.ViewHolder
中自己定义.
2.可在xml
文件中自定义修改
3.O__O “……..好吧,还是我太懒了….以后会补充的~~
About Me
===
CSDN:http://blog.csdn.net/ccj659/article/
简书:http://www.jianshu.com/u/94423b4ef5cf
github: https//github.com/ccj659/
阅读全文
1 0
- 筛选组件PopsTabView
- react实现筛选条件组件
- 微信小程序下拉筛选菜单WXDropDownMenu组件
- 筛选
- 筛选
- 筛选
- xmlhttp组件获取远程文件并筛选出目标数据
- xmlhttp组件获取远程文件并筛选出目标数据
- Java POI组件——读、筛选、写Excel
- vue编写的移动端筛选条组件。
- vue编写的移动端筛选条组件。
- Informatica基础系列(三)——表达式、筛选、查找组件
- IIS设置ISAPI筛选器Rewrite组件防盗链(防盗链可以节省流量,提高性能)
- 筛选法
- 筛选函数
- 筛选简历
- 筛选list
- 筛选功能
- cygwin
- 利用image_retrain训练的output_graph.pb识别图片出错
- linux查看硬盘使用情况&删除文件夹
- 将军鬼上身啦!
- BlueROV-16: Solve the initialization problem
- 筛选组件PopsTabView
- 安卓app限制上网之——Linux防火墙Iptables新手教程
- Elasticsearch5.4 删除type
- 第四周学习笔记
- jsp动态拼装select标签的option选项
- 【OpenSource】【EventBus】EventBus 简介
- 服务器上的日志文件不打印e.printStackTrace();信息
- MyBatis源代码--数据源(dataSource)
- 解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.