IT教程 ·

Android Spinner 下拉框简朴运用 细致注解

目次

@

Android Spinner

Spinner 供应下拉列表式的输入体式格局,该要领可以有用节约手机屏幕上的显现空间。

本次我将运用最简朴的Spinner来完成一个下拉框。完成的功用以下面的动图
Android Spinner 下拉框简朴运用 细致注解 IT教程 第1张

代码部份

Spinner代码引见

        list_Q.add("区县");//下拉框列表,用于存储下拉的内容
        adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
        //建立adpter适配器(必需)。
        //R.layout.support_simple_spinner_dropdown_item,spinner框款式,这里我运用的都是默许的。
        spinner_Q.setAdapter(adapter_Q);//spinner绑定adpter,到这里你的下拉框已可以显现了。
        //spinner_Q.setEnabled(false);//设置spinner不可操纵
        //设置spinner的挑选监听事宜
        spinner_Q.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

adapter_Q = new ArrayAdapter (getActivity(),==R.layout.support_simple_spinner_dropdown_item==,list_Q);
这里是自定义挑选添补后的字体款式

adapter_Q .setDropDownViewResource(==R.layout.item_drop==); 自定义下拉的字体款式
这款式你都可以本身写一个XMAL文件,我的运用的都是默许的就不在这里诠释了android:dropDownSelector:列表框被选中时的背景

下面援用一个博主的内容

android:dropDownWidth:设置下拉列表框的宽度
android:gravity:设置内里组件的对其体式格局
android:popupBackground:设置列表框的背景
android:prompt:设置对话框形式的列表框的提醒信息(标题),只可以援用string.xml中的资本id,而不能直接写字符串
android:spinnerMode:列表框的形式,有两个可选值:dialog:对话框作风的窗口
dropdown:下拉菜单作风的窗口(默许) android:overlapAnchor =
false:设置下拉框不掩盖显现框。(主要!!!) 可选属性:android:entries:运用数组资本设置下拉列表框的列表项目

———————————————— 版权声明:本文为CSDN博主「北极熊的笑容」的原创文章,遵照 CC 4.0 BY-SA
版权协定,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lpCrazyBoy/article/details/80748334

中心代码

    private List<String> list_P= new ArrayList<>();//省下拉框列表
    private List<String> list_C= new ArrayList<>();//市下拉框列表
    private List<String> list_Q= new ArrayList<>();//区县下拉框列表
    private List<String> list_TP= new ArrayList<>();//范例下拉框列表


    private ArrayAdapter<String> adapter_P;//省列表的适配器
    private ArrayAdapter<String> adapter_C;//市列表的适配器
    private ArrayAdapter<String> adapter_Q;//区县列表的适配器
    private ArrayAdapter<String> adapter_TP;//范例列表的适配器

    private Button btn_eq_ok ;//查询按钮
    private Spinner spinner_P;//省下拉框
    private Spinner spinner_C;//市下拉框
    private Spinner spinner_Q;//区县下拉框
    private Spinner spinner_TP;//范例下拉框

    public static equipmentFragment newInstance() {
        return new equipmentFragment();
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.equipment_fragment, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mViewModel = ViewModelProviders.of(this).get(EquipmentViewModel.class);
        // TODO: Use the ViewModel

        init_Palette();//初始化控件
        init_hashmap();//初始化hashmap。

        //初始化省下拉框
        list_P.add("省");
        adapter_P = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_P);
        spinner_P.setAdapter(adapter_P);
        spinner_P.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                if (adapter_P.getItem(i).equals("省")){
                    list_C.clear();
                    list_C.add("市");
                    adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
                    spinner_C.setAdapter(adapter_C);
                }else{
                    list_C.clear();
                    list_C.add("市");
                    mapTool_getList(c_Hashmap,list_C,mapTool_getKey(p_Hashmap,adapter_P.getItem(i)),2);
                    adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
                    spinner_C.setAdapter(adapter_C);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                spinner_C.setEnabled(false);
            }
        });


        /***
         * 初始化市下拉框
         */
        list_C.add("市");
        adapter_C = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_C);
        spinner_C.setAdapter(adapter_C);
        //spinner_C.setEnabled(false);
        spinner_C.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {//这个参数‘i’是挑选项的索引
                //每当挑选一个新的就会触发这个事宜,默许会挑选第一个,应用这个从这里设置
                if (adapter_C.getItem(i).equals("市")){//如果市下拉框挑选了市,市是默许显现的
                    /*这两句是重置区的下拉列表*/
                    list_Q.clear();//消灭区的列表
                    list_Q.add("区县");//增加一个区县,

                    adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);//建立
                    spinner_Q.setAdapter(adapter_Q);//绑定

                }else{
                    /*这三句是重置区的下拉列表*/
                    list_Q.clear();
                    list_Q.add("区县");
                    //增加相符要求的项目。自定义的一个要领,从区里找相符市里的地名,然后增加到list
                    mapTool_getList(q_Hashmap,list_Q,mapTool_getKey(c_Hashmap,adapter_C.getItem(i)),4);

                    adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
                    spinner_Q.setAdapter(adapter_Q);
                }
                //程前启后,就完成了下拉列表的联动,末了只用鉴别区县框内里挑选的内容是不是是“区县”,便可分辨,详细情况详细斟酌

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

        /***
         * 初始化区县下拉框
         */
        list_Q.add("区县");
        adapter_Q = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_Q);
        spinner_Q.setAdapter(adapter_Q);
        //spinner_Q.setEnabled(false);
        spinner_Q.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

        /***
         * 初始化监测范例下拉框
         */
        list_TP.add("范例");
        list_TP.add("雨量计");
        list_TP.add("泥位计");
        list_TP.add("地声传感器");
        list_TP.add("撞线传感器");
        adapter_TP = new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,list_TP);
        spinner_TP.setAdapter(adapter_TP);
        //spinner_TP.setEnabled(false);
        spinner_TP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

        //按钮点击事宜
        btn_eq_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Log.d("test","run:btn_eq_ok查询点击:"+spinner_Q.getSelectedItem());

                //鉴别区县框内里挑选的内容是不是是“区县”,便可分辨
               if (spinner_Q.getSelectedItem().equals("区县")){
                   Toast.makeText(getActivity(),"请完美省/市/区县",Toast.LENGTH_SHORT).show();
               }else {
                //弹框提醒
                   Toast.makeText(getActivity(),mapTool_getKey(q_Hashmap,spinner_Q.getSelectedItem().toString()),Toast.LENGTH_SHORT).show();
               }
            }
        });
    }

说在末了

这里我也没用自定义款式,这个可以经由过程重写adapter来完成,详细参考下面链接。简书:Android 好用的下拉控件Spinner
CSDN:修正Android中Spinner的显现及下拉款式的四种要领
这里我就是运用了list来掌握列表的更新和联动,有的不晓得可以留言。本人也比较挫,写不来隐蔽的提醒项,就痛快将就用吧,功用完成就行。

末了骚一句,祝人人情人节快活
——2020.2.14
(你如今的脸色肯定很可笑,哈哈哈)
如果帮到你了,记得点个赞哦亲!

参与评论