package com.dayu.baselibrary.view; 
 | 
  
 | 
import android.app.Activity; 
 | 
import android.content.Context; 
 | 
import android.view.View; 
 | 
import android.view.inputmethod.InputMethodManager; 
 | 
import android.widget.TextView; 
 | 
  
 | 
import androidx.annotation.NonNull; 
 | 
  
 | 
import com.bigkoo.pickerview.builder.OptionsPickerBuilder; 
 | 
import com.bigkoo.pickerview.listener.CustomListener; 
 | 
import com.bigkoo.pickerview.listener.OnOptionsSelectListener; 
 | 
import com.bigkoo.pickerview.view.OptionsPickerView; 
 | 
import com.dayu.baselibrary.R; 
 | 
  
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Copyright (C), 2023, 
 | 
 * Author: zuo 
 | 
 * Date: 2023-04-09 17:37 
 | 
 * Description: 滚动选择框 
 | 
 */ 
 | 
public class ChooseView { 
 | 
  
 | 
    private OptionsPickerView pvCustomOptions; 
 | 
    Context mycontext; 
 | 
    List<String> mycardItem; 
 | 
    static ChooseView chooseView; 
 | 
    ChooseCallBack chooseCallBack; 
 | 
  
 | 
  
 | 
    public static ChooseView getIntence(@NonNull Activity context, List<String> cardItem, ChooseCallBack chooseCallBack) { 
 | 
        hideSoftKeyboard(context); 
 | 
        if (chooseView == null) { 
 | 
            chooseView = new ChooseView(); 
 | 
        } 
 | 
        chooseView.mycontext = context; 
 | 
        chooseView.chooseCallBack = chooseCallBack; 
 | 
        chooseView.mycardItem = cardItem; 
 | 
        chooseView.initView(); 
 | 
        return chooseView; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 隐藏软键盘(只适用于Activity,不适用于Fragment) 
 | 
     */ 
 | 
    public static void hideSoftKeyboard(Activity activity) { 
 | 
        try { 
 | 
            View view = activity.getCurrentFocus(); 
 | 
            if (view != null) { 
 | 
                InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); 
 | 
                inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    void initView() { 
 | 
        /** 
 | 
         * @description 
 | 
         * 
 | 
         * 注意事项: 
 | 
         * 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。 
 | 
         * 具体可参考demo 里面的两个自定义layout布局。 
 | 
         */ 
 | 
        pvCustomOptions = new OptionsPickerBuilder(mycontext, new OnOptionsSelectListener() { 
 | 
            @Override 
 | 
            public void onOptionsSelect(int options1, int option2, int options3, View v) { 
 | 
                //返回的分别是三个级别的选中位置 
 | 
//                String tx = cardItem.get(options1).getPickerViewText(); 
 | 
//                btn_CustomOptions.setText(tx); 
 | 
                chooseCallBack.onOptionsSelect(options1); 
 | 
            } 
 | 
        }) 
 | 
                .setLayoutRes(R.layout.pickerview_choose, new CustomListener() { 
 | 
                    @Override 
 | 
                    public void customLayout(View v) { 
 | 
                        final TextView tvSubmit = (TextView) v.findViewById(R.id.bt_add); 
 | 
                        final TextView tvCancel = (TextView) v.findViewById(R.id.bt_cancel); 
 | 
                        tvSubmit.setOnClickListener(new View.OnClickListener() { 
 | 
                            @Override 
 | 
                            public void onClick(View v) { 
 | 
                                pvCustomOptions.returnData(); 
 | 
                                pvCustomOptions.dismiss(); 
 | 
                            } 
 | 
                        }); 
 | 
  
 | 
                        tvCancel.setOnClickListener(new View.OnClickListener() { 
 | 
                            @Override 
 | 
                            public void onClick(View v) { 
 | 
  
 | 
                                pvCustomOptions.dismiss(); 
 | 
                            } 
 | 
                        }); 
 | 
  
 | 
                    } 
 | 
                }) 
 | 
                .isDialog(false) 
 | 
                .setOutSideCancelable(false) 
 | 
                .build(); 
 | 
  
 | 
        pvCustomOptions.setPicker(mycardItem);//添加数据 
 | 
  
 | 
    } 
 | 
  
 | 
    public void show() { 
 | 
        pvCustomOptions.show(); 
 | 
    } 
 | 
  
 | 
  
 | 
    public interface ChooseCallBack { 
 | 
        void onOptionsSelect(int options1); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |