package MyJar.PickerView; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
  
 | 
import android.view.View; 
 | 
  
 | 
import com.example.ios_pickerview.R; 
 | 
  
 | 
public class WheelOptions { 
 | 
    private View view; 
 | 
    private WheelView wv_option1; 
 | 
    private WheelView wv_option2; 
 | 
    private WheelView wv_option3; 
 | 
  
 | 
    private ArrayList<String> mOptions1Items; 
 | 
    private ArrayList<ArrayList<String>> mOptions2Items; 
 | 
    private ArrayList<ArrayList<ArrayList<String>>> mOptions3Items; 
 | 
    public int screenheight; 
 | 
  
 | 
    public View getView() { 
 | 
        return view; 
 | 
    } 
 | 
  
 | 
    public void setView(View view) { 
 | 
        this.view = view; 
 | 
    } 
 | 
  
 | 
    public WheelOptions(View view) { 
 | 
        super(); 
 | 
        this.view = view; 
 | 
        setView(view); 
 | 
    } 
 | 
  
 | 
    public void setPicker(ArrayList<String> optionsItems) { 
 | 
        setPicker(optionsItems, null, null, false); 
 | 
    } 
 | 
  
 | 
    public void setPicker(ArrayList<String> options1Items, 
 | 
            ArrayList<ArrayList<String>> options2Items, boolean linkage) { 
 | 
        setPicker(options1Items, options2Items, null, linkage); 
 | 
    } 
 | 
  
 | 
    public void setPicker(ArrayList<String> options1Items, 
 | 
            ArrayList<ArrayList<String>> options2Items, 
 | 
            ArrayList<ArrayList<ArrayList<String>>> options3Items, 
 | 
            boolean linkage) { 
 | 
        this.mOptions1Items = options1Items; 
 | 
        this.mOptions2Items = options2Items; 
 | 
        this.mOptions3Items = options3Items; 
 | 
        int len = ArrayWheelAdapter.DEFAULT_LENGTH; 
 | 
        if (this.mOptions3Items == null) 
 | 
            len = 8; 
 | 
        if (this.mOptions2Items == null) 
 | 
            len = 12; 
 | 
        // 选项1 
 | 
        wv_option1 = (WheelView) view.findViewById(R.id.options1); 
 | 
        wv_option1.setAdapter(new ArrayWheelAdapter(mOptions1Items, len));// 设置显示数据 
 | 
        wv_option1.setCurrentItem(0);// 初始化时显示的数据 
 | 
        // 选项2 
 | 
        wv_option2 = (WheelView) view.findViewById(R.id.options2); 
 | 
        if (mOptions2Items != null) 
 | 
            wv_option2.setAdapter(new ArrayWheelAdapter(mOptions2Items.get(0)));// 设置显示数据 
 | 
        wv_option2.setCurrentItem(wv_option1.getCurrentItem());// 初始化时显示的数据 
 | 
        // 选项3 
 | 
        wv_option3 = (WheelView) view.findViewById(R.id.options3); 
 | 
        if (mOptions3Items != null) 
 | 
            wv_option3.setAdapter(new ArrayWheelAdapter(mOptions3Items.get(0) 
 | 
                    .get(0)));// 设置显示数据 
 | 
        wv_option3.setCurrentItem(wv_option3.getCurrentItem());// 初始化时显示的数据 
 | 
  
 | 
        // 根据屏幕密度来指定选择器字体的大小(不同屏幕可能不同) 
 | 
        int textSize = (screenheight / 100) * 4; 
 | 
  
 | 
        wv_option1.TEXT_SIZE = textSize; 
 | 
        wv_option2.TEXT_SIZE = textSize; 
 | 
        wv_option3.TEXT_SIZE = textSize; 
 | 
  
 | 
        if (this.mOptions2Items == null) 
 | 
            wv_option2.setVisibility(View.GONE); 
 | 
        if (this.mOptions3Items == null) 
 | 
            wv_option3.setVisibility(View.GONE); 
 | 
  
 | 
        // 联动监听器 
 | 
        OnWheelChangedListener wheelListener_option1 = new OnWheelChangedListener() { 
 | 
  
 | 
            @Override 
 | 
            public void onChanged(WheelView wheel, int oldValue, int newValue) { 
 | 
                if (mOptions2Items != null) { 
 | 
                    wv_option2.setAdapter(new ArrayWheelAdapter(mOptions2Items 
 | 
                            .get(wv_option1.getCurrentItem()))); 
 | 
                    wv_option2.setCurrentItem(0); 
 | 
                } 
 | 
                if (mOptions3Items != null) { 
 | 
                    wv_option3.setAdapter(new ArrayWheelAdapter(mOptions3Items 
 | 
                            .get(wv_option1.getCurrentItem()).get( 
 | 
                                    wv_option2.getCurrentItem()))); 
 | 
                    wv_option3.setCurrentItem(0); 
 | 
                } 
 | 
            } 
 | 
        }; 
 | 
        OnWheelChangedListener wheelListener_option2 = new OnWheelChangedListener() { 
 | 
  
 | 
            @Override 
 | 
            public void onChanged(WheelView wheel, int oldValue, int newValue) { 
 | 
                if (mOptions3Items != null) { 
 | 
                    wv_option3.setAdapter(new ArrayWheelAdapter(mOptions3Items 
 | 
                            .get(wv_option1.getCurrentItem()).get( 
 | 
                                    wv_option2.getCurrentItem()))); 
 | 
                    wv_option3.setCurrentItem(0); 
 | 
                } 
 | 
            } 
 | 
        }; 
 | 
  
 | 
        // 添加联动监听 
 | 
        if (options2Items != null && linkage) 
 | 
            wv_option1.addChangingListener(wheelListener_option1); 
 | 
        if (options3Items != null && linkage) 
 | 
            wv_option2.addChangingListener(wheelListener_option2); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 设置选项的单位 
 | 
     *  
 | 
     * @param label1 
 | 
     * @param label2 
 | 
     * @param label3 
 | 
     */ 
 | 
    public void setLabels(String label1, String label2, String label3) { 
 | 
        if (label1 != null) 
 | 
            wv_option1.setLabel(label1); 
 | 
        if (label2 != null) 
 | 
            wv_option2.setLabel(label2); 
 | 
        if (label3 != null) 
 | 
            wv_option3.setLabel(label3); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 设置是否循环滚动 
 | 
     *  
 | 
     * @param cyclic 
 | 
     */ 
 | 
    public void setCyclic(boolean cyclic) { 
 | 
        wv_option1.setCyclic(cyclic); 
 | 
        wv_option2.setCyclic(cyclic); 
 | 
        wv_option3.setCyclic(cyclic); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 返回当前选中的结果对应的位置数组 因为支持三级联动效果,分三个级别索引,0,1,2 
 | 
     *  
 | 
     * @return 
 | 
     */ 
 | 
    public int[] getCurrentItems() { 
 | 
        int[] currentItems = new int[3]; 
 | 
        currentItems[0] = wv_option1.getCurrentItem(); 
 | 
        currentItems[1] = wv_option2.getCurrentItem(); 
 | 
        currentItems[2] = wv_option3.getCurrentItem(); 
 | 
        return currentItems; 
 | 
    } 
 | 
  
 | 
    public void setCurrentItems(int option1, int option2, int option3) { 
 | 
        wv_option1.setCurrentItem(option1); 
 | 
        wv_option2.setCurrentItem(option2); 
 | 
        wv_option3.setCurrentItem(option3); 
 | 
    } 
 | 
} 
 |