DropDownMenu
介绍:
又一个筛选器解决方案。
运行效果:
使用说明:
特点
-
使用 Adapter模式 添加筛选器条目.使代码清晰可见,便于维护.
-
使用泛型支持各种数据数据model. 提供三种泛型View类, 单列ListView,双列ListView 和 单个GridView, sample中还提供了两个GridView的示例.
-
自己写FilterCheckedView,支持checked属性,使用selector就可配置选中样式.配合AbsListView.setChecked()使用
-
使用FilterUrl作为中介,toString()方法获取到所拼接url,隔离了数据和View,使代码更清晰.
布局文件
<com.baiiu.filter.DropDownMenu
android:id="@+id/filterDropDownView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@id/mFilterContentView" //mFilterContentView标识为其内部内容,可换为RecyclerView等. id必填.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textSize="22sp" />
</com.baiiu.filter.DropDownMenu>
代码中:
//代码中设置Adapter.
dropDownView.setMenuAdapter(new DropMenuAdapter(this, titleList));
DropMenuAdapter中:
@Override
public int getMenuCount() {
return titles.length;
}
@Override
public String getMenuTitle(int position) {
return titles\[position\];
}
@Override
public int getBottomMargin(int position) {
return 0;
}
@Override
public View getView(int position, FrameLayout parentContainer) {
...
return createSingleListView();
}
添加SingleListView
private View createSingleListView() {
SingleListView<String> singleListView = new SingleListView<String>(mContext)
.adapter(new SimpleTextAdapter<String>(null, mContext) {
@Override
public String provideText(String string) {
return string;
}
})
.onItemClick(new OnFilterItemClickListener<String>() {
@Override
public void onItemClick(String item) {
FilterUrl.instance().singleListPosition = item;
FilterUrl.instance().position = 0;
FilterUrl.instance().positionTitle = item;
if (onFilterDoneListener != null) {
onFilterDoneListener.onFilterDone(0, "", "");
}
}
});
//初始化数据
singleListView.setList(list, -1);//默认不选中
}
已下载
0