zoukankan      html  css  js  c++  java
  • android NumberPicker 数组越界的坑

    被这个问题耽误了一个多小时。。。

    直接上解决方案,参考红色部分。

    private void initViews() {
            wheel = (NumberPicker) findViewById(R.id.info_wheel_province);
            wheelCity = (NumberPicker) findViewById(R.id.info_wheel_city);
            wheelCity.setWrapSelectorWheel(false);
    
            //读取地址信息json
            final List<CityBean> cityBeans = ResUtils.initCityList(this);
            final String[] pros = new String[cityBeans.size()];
    
            for (int i = 0; i < pros.length; i++) {
                pros[i] = cityBeans.get(i).getProvince();
            }
    
    //        wheel.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
    //        wheelCity.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
            wheel.setMaxValue(pros.length - 1);
            wheel.setMinValue(0);
            wheel.setWrapSelectorWheel(false);
            wheel.setDisplayedValues(pros);
            wheel.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    
                @Override
                public void onValueChange(NumberPicker picker, int oldVal, final int newVal) {
                    String citys = cityBeans.get(newVal).getCitys();
                    final String[] split = citys.split(",");
                    wheelCity.setMinValue(0);
                    wheelCity.setValue(0);
                    if (split.length - 1 > wheelCity.getMaxValue()) {
                        wheelCity.setDisplayedValues(split);
                        wheelCity.setMaxValue(split.length - 1);
                    } else {
                        wheelCity.setMaxValue(split.length - 1);
                        wheelCity.setDisplayedValues(split);
                    }
                    wheelCity.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    
                        @Override
                        public void onValueChange(NumberPicker picker2, int oldVal2, int newVal2) {
                            Toast.makeText(InfoActivity.this, pros[newVal] + " " + split[newVal2], Toast.LENGTH_LONG).show();
                        }
                    });
                }
            });
        }

    有兴趣的可以研究一下源码找下原因。

  • 相关阅读:
    给下拉框加上可输入查询特性-升级版本
    手把手教你在CentOS7中安装JavaJDK和配置环境变量
    CentOS7.0下MySql的安装和配置
    CentOS常规辅助工具安装
    MongoDB教程之常用操作
    商城商品超卖处理
    微信JS-SDK分享的坑
    当数据库做了Aways on后,收缩数据库日志文件
    SQL Server 2016 非域Aways On环境搭建
    win8以上系统查看iis网站进程内存占用情况
  • 原文地址:https://www.cnblogs.com/xirtam/p/4695900.html
Copyright © 2011-2022 走看看