一、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);
}