Filter容器--PopsTabView
#PopsTabView
PopsTabView是个filter容器,他可以自动,快速,构建不同筛选样式,自由组合成一组tab.
目前版本v1.1
公司主营业务:网站制作、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出来安免费做网站回馈大家。
筛选样式 | 筛选种类 |
---|---|
单列 | 单选,多选 |
三行 | 单选,多选 |
双列 | 单选,多选 |
复杂 | 单项单选,单项多选 |
后续筛选会不断完善补充.
项目地址传送门 https://github.com/ccj659/PopsTabView
#Show
#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 {
@Override
public String getResultParamsIds(List 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 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/
名称栏目:Filter容器--PopsTabView
标题来源:http://scyanting.com/article/ghpjsj.html