package com.bigkoo.pickerview.view; 
 | 
  
 | 
import android.content.Context; 
 | 
import android.text.TextUtils; 
 | 
import android.view.LayoutInflater; 
 | 
import android.view.View; 
 | 
import android.widget.Button; 
 | 
import android.widget.LinearLayout; 
 | 
import android.widget.RelativeLayout; 
 | 
import android.widget.TextView; 
 | 
  
 | 
import com.bigkoo.pickerview.configure.PickerOptions; 
 | 
import com.example.pickerviewlibrary.R; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 条件选择器 
 | 
 * Created by Sai on 15/11/22. 
 | 
 */ 
 | 
public class OptionsPickerView<T> extends BasePickerView implements View.OnClickListener { 
 | 
  
 | 
    private WheelOptions<T> wheelOptions; 
 | 
  
 | 
    private static final String TAG_SUBMIT = "submit"; 
 | 
    private static final String TAG_CANCEL = "cancel"; 
 | 
  
 | 
  
 | 
    public OptionsPickerView(PickerOptions pickerOptions) { 
 | 
        super(pickerOptions.context); 
 | 
        mPickerOptions = pickerOptions; 
 | 
        initView(pickerOptions.context); 
 | 
    } 
 | 
  
 | 
    private void initView(Context context) { 
 | 
        setDialogOutSideCancelable(); 
 | 
        initViews(); 
 | 
        initAnim(); 
 | 
        initEvents(); 
 | 
        if (mPickerOptions.customListener == null) { 
 | 
            LayoutInflater.from(context).inflate(mPickerOptions.layoutRes, contentContainer); 
 | 
  
 | 
            //顶部标题 
 | 
            TextView tvTitle = (TextView) findViewById(R.id.tvTitle); 
 | 
            RelativeLayout rv_top_bar = (RelativeLayout) findViewById(R.id.rv_topbar); 
 | 
  
 | 
            //确定和取消按钮 
 | 
            Button btnSubmit = (Button) findViewById(R.id.btnSubmit); 
 | 
            Button btnCancel = (Button) findViewById(R.id.btnCancel); 
 | 
  
 | 
            btnSubmit.setTag(TAG_SUBMIT); 
 | 
            btnCancel.setTag(TAG_CANCEL); 
 | 
            btnSubmit.setOnClickListener(this); 
 | 
            btnCancel.setOnClickListener(this); 
 | 
  
 | 
            //设置文字 
 | 
            btnSubmit.setText(TextUtils.isEmpty(mPickerOptions.textContentConfirm) ? context.getResources().getString(R.string.pickerview_submit) : mPickerOptions.textContentConfirm); 
 | 
            btnCancel.setText(TextUtils.isEmpty(mPickerOptions.textContentCancel) ? context.getResources().getString(R.string.pickerview_cancel) : mPickerOptions.textContentCancel); 
 | 
            tvTitle.setText(TextUtils.isEmpty(mPickerOptions.textContentTitle) ? "" : mPickerOptions.textContentTitle);//默认为空 
 | 
  
 | 
            //设置color 
 | 
            btnSubmit.setTextColor(mPickerOptions.textColorConfirm); 
 | 
            btnCancel.setTextColor(mPickerOptions.textColorCancel); 
 | 
            tvTitle.setTextColor(mPickerOptions.textColorTitle); 
 | 
            rv_top_bar.setBackgroundColor(mPickerOptions.bgColorTitle); 
 | 
  
 | 
            //设置文字大小 
 | 
            btnSubmit.setTextSize(mPickerOptions.textSizeSubmitCancel); 
 | 
            btnCancel.setTextSize(mPickerOptions.textSizeSubmitCancel); 
 | 
            tvTitle.setTextSize(mPickerOptions.textSizeTitle); 
 | 
        } else { 
 | 
            mPickerOptions.customListener.customLayout(LayoutInflater.from(context).inflate(mPickerOptions.layoutRes, contentContainer)); 
 | 
        } 
 | 
  
 | 
        // ----滚轮布局 
 | 
        final LinearLayout optionsPicker = (LinearLayout) findViewById(R.id.optionspicker); 
 | 
        optionsPicker.setBackgroundColor(mPickerOptions.bgColorWheel); 
 | 
  
 | 
        wheelOptions = new WheelOptions<>(optionsPicker, mPickerOptions.isRestoreItem); 
 | 
        if (mPickerOptions.optionsSelectChangeListener != null) { 
 | 
            wheelOptions.setOptionsSelectChangeListener(mPickerOptions.optionsSelectChangeListener); 
 | 
        } 
 | 
  
 | 
        wheelOptions.setTextContentSize(mPickerOptions.textSizeContent); 
 | 
        wheelOptions.setItemsVisible(mPickerOptions.itemsVisibleCount); 
 | 
        wheelOptions.setAlphaGradient(mPickerOptions.isAlphaGradient); 
 | 
        wheelOptions.setLabels(mPickerOptions.label1, mPickerOptions.label2, mPickerOptions.label3); 
 | 
        wheelOptions.setTextXOffset(mPickerOptions.x_offset_one, mPickerOptions.x_offset_two, mPickerOptions.x_offset_three); 
 | 
        wheelOptions.setCyclic(mPickerOptions.cyclic1, mPickerOptions.cyclic2, mPickerOptions.cyclic3); 
 | 
        wheelOptions.setTypeface(mPickerOptions.font); 
 | 
  
 | 
        setOutSideCancelable(mPickerOptions.cancelable); 
 | 
  
 | 
        wheelOptions.setDividerColor(mPickerOptions.dividerColor); 
 | 
        wheelOptions.setDividerType(mPickerOptions.dividerType); 
 | 
        wheelOptions.setLineSpacingMultiplier(mPickerOptions.lineSpacingMultiplier); 
 | 
        wheelOptions.setTextColorOut(mPickerOptions.textColorOut); 
 | 
        wheelOptions.setTextColorCenter(mPickerOptions.textColorCenter); 
 | 
        wheelOptions.isCenterLabel(mPickerOptions.isCenterLabel); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 动态设置标题 
 | 
     * 
 | 
     * @param text 标题文本内容 
 | 
     */ 
 | 
    public void setTitleText(String text) { 
 | 
        TextView tvTitle = (TextView) findViewById(R.id.tvTitle); 
 | 
        if (tvTitle != null) { 
 | 
            tvTitle.setText(text); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 设置默认选中项 
 | 
     * 
 | 
     * @param option1 
 | 
     */ 
 | 
    public void setSelectOptions(int option1) { 
 | 
        mPickerOptions.option1 = option1; 
 | 
        reSetCurrentItems(); 
 | 
    } 
 | 
  
 | 
  
 | 
    public void setSelectOptions(int option1, int option2) { 
 | 
        mPickerOptions.option1 = option1; 
 | 
        mPickerOptions.option2 = option2; 
 | 
        reSetCurrentItems(); 
 | 
    } 
 | 
  
 | 
    public void setSelectOptions(int option1, int option2, int option3) { 
 | 
        mPickerOptions.option1 = option1; 
 | 
        mPickerOptions.option2 = option2; 
 | 
        mPickerOptions.option3 = option3; 
 | 
        reSetCurrentItems(); 
 | 
    } 
 | 
  
 | 
    private void reSetCurrentItems() { 
 | 
        if (wheelOptions != null) { 
 | 
            wheelOptions.setCurrentItems(mPickerOptions.option1, mPickerOptions.option2, mPickerOptions.option3); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public void setPicker(List<T> optionsItems) { 
 | 
        this.setPicker(optionsItems, null, null); 
 | 
    } 
 | 
  
 | 
    public void setPicker(List<T> options1Items, List<List<T>> options2Items) { 
 | 
        this.setPicker(options1Items, options2Items, null); 
 | 
    } 
 | 
  
 | 
    public void setPicker(List<T> options1Items, 
 | 
                          List<List<T>> options2Items, 
 | 
                          List<List<List<T>>> options3Items) { 
 | 
  
 | 
        wheelOptions.setPicker(options1Items, options2Items, options3Items); 
 | 
        reSetCurrentItems(); 
 | 
    } 
 | 
  
 | 
  
 | 
    //不联动情况下调用 
 | 
    public void setNPicker(List<T> options1Items, 
 | 
                           List<T> options2Items, 
 | 
                           List<T> options3Items) { 
 | 
  
 | 
        wheelOptions.setLinkage(false); 
 | 
        wheelOptions.setNPicker(options1Items, options2Items, options3Items); 
 | 
        reSetCurrentItems(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onClick(View v) { 
 | 
        String tag = (String) v.getTag(); 
 | 
        if (tag.equals(TAG_SUBMIT)) { 
 | 
            returnData(); 
 | 
        } else if (tag.equals(TAG_CANCEL)) { 
 | 
            if (mPickerOptions.cancelListener != null) { 
 | 
                mPickerOptions.cancelListener.onClick(v); 
 | 
            } 
 | 
        } 
 | 
        dismiss(); 
 | 
    } 
 | 
  
 | 
    //抽离接口回调的方法 
 | 
    public void returnData() { 
 | 
        if (mPickerOptions.optionsSelectListener != null) { 
 | 
            int[] optionsCurrentItems = wheelOptions.getCurrentItems(); 
 | 
            mPickerOptions.optionsSelectListener.onOptionsSelect(optionsCurrentItems[0], optionsCurrentItems[1], optionsCurrentItems[2], clickView); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public boolean isDialog() { 
 | 
        return mPickerOptions.isDialog; 
 | 
    } 
 | 
} 
 |