如果我一个页面有N个需要使用PickerView选择数据的方式,原本我只是把数据源改变一下然后改变一下标题就好了,现在到好必须创建N个PickerView不能复用了。以下是我以前的使用方式:
/**
* 显示选择列表控件。
*
* @param pickerType 事件类型。
* @param title 标题,可以为空,如果为空表示没有标题。
*/
private void showPickerView(int pickerType, String title) {
int defaultSelection = getDataFormPickType(mPickerData, pickerType);
if (mPickerData.isEmpty()) {
//……
return;
}
mPickerType = pickerType;
if (!TextUtils.isEmpty(title)) {
mPickerView.setTitle(title);
}
mPickerView.setPicker(mPickerData);
mPickerView.setCyclic(false);
mPickerView.setSelectOptions(defaultSelection);
mPickerView.show();
}
/**
* 根据类型不同返回对应的数据源。
* @param list 用来承载数据源的容器。
* @param pickerType 当前要加载的数据源的类型。
* @return 返回当前类型所应当选中的默认索引。
*/
private int getDataFormPickType(ArrayList list, int pickerType) {
int index = 0;
list.clear();
switch (pickerType) {
case PICKER_SELECT_LEVEL: //选择等级
……
break;
case PICKER_SELECT_BRAND: //选择品牌
……
break;
}
return index < 0 ? 0 : index;
}
@Override
public void onOptionsSelect(int options1, int option2, int options3) {
switch (mPickerType) {
case PICKER_SELECT_LEVEL: //选择等级
……
break;
case PICKER_SELECT_BRAND: //选择品牌
……
break;
}
}
2条答案
按热度按时间js81xvg61#
我认为有些参数的配置没有必要使用构造者模式吧,毕竟不是改变这些参数会影响整个控件。例如:标题,字体颜色这些。
ar5n3qh52#
@kelinZhou 感谢反馈,这个问题暂时还在抽空做优化,4.x版本会进行重构。若需要重用的话,建议先暂时引入lib然后自行定制一下~ 标题、颜色等常规set方法可以自行添加即可。这几个月工作稍微有点忙,还望见谅~~