各种长见识涨姿势安卓资源收集

使用NumberPicker选择器遇到的一些坑

2017-01-22  本文已影响55人  唠嗑008

一、NumberPicker通常是只能显示数字,如何让它显示文字呢?

np = (NumberPicker) findViewById(R.id.numberPicker1);  
String[] city = {"北京","上海","广州","深圳","成都","天津"};  
np.setDisplayedValues(city);  
np.setMinValue(0);   //设置显示的第一个数据
np.setMaxValue(city.length - 1);    //设置显示的最后一个数据

二、关于NumberPicker滑动选择时出现数组下标越界的问题

解决方案一
1、当前NumberPicker的最大值大于数组大小时,先setMaxValue再setDisplayedValues。
2、当前NumberPicker的最大值小于数组大小时,先setDisplayedValues再setMaxValue。

private void updateCitySelector() {
    int oldMax = cityPicker.getMaxValue();
    int newMax = mCitys.length - 1;
    if(newMax > oldMax) {
        cityPicker.setDisplayedValues(mCitys);
        cityPicker.setMaxValue(newMax);
    } else {
        cityPicker.setMaxValue(newMax);
        cityPicker.setDisplayedValues(mCitys);
    }
}

解决方案二(推荐):
在设置最大值和最新数组数据前,先将之前设置过的数据设为null。

private void updateCitySelector() {
    cityPicker.setDisplayedValues(null);
    cityPicker.setMaxValue(mCitys.length - 1);
    cityPicker.setDisplayedValues(mCitys);
}
上一篇下一篇

猜你喜欢

热点阅读