Android-PickerView 为什么PickerView改成了Builder的创建方式?

jfgube3f  于 2022-10-22  发布在  Android
关注(0)|答案(2)|浏览(128)

如果我一个页面有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;
        }
    }
js81xvg6

js81xvg61#

我认为有些参数的配置没有必要使用构造者模式吧,毕竟不是改变这些参数会影响整个控件。例如:标题,字体颜色这些。

ar5n3qh5

ar5n3qh52#

@kelinZhou 感谢反馈,这个问题暂时还在抽空做优化,4.x版本会进行重构。若需要重用的话,建议先暂时引入lib然后自行定制一下~ 标题、颜色等常规set方法可以自行添加即可。这几个月工作稍微有点忙,还望见谅~~

相关问题