Comments (11)
应该是可以的,但是我没有过多的对更改最小值进行测试,一般情况下固定最小值并使用
refreshByNewDisplayedValues(String[] display)
就能满足需要。
另外,好像NumberPicker是不能够设置最小值为负值的,只能大于等于0,动态的更改最小值后,小于最小值的那部分对应的值好像就不显示了。
对于NumberPickerView动态的改变最小值,我再进一步测测。如果需要动态的“去掉”数据list的起始的某一部分,可以使用refreshByNewDisplayedValues(String[] display),传入的参数为“去掉“头部部分数据的剩余部分
from numberpickerview.
目前可以肯定我使用的数据全是正数,且我确实需要更换最小值,如原显示数据为1,2,3,4,5,6,现在欲显示的数据为7,8,9,10,11,12
from numberpickerview.
刚才测试了一下,可以这样:
更新函数:
//输入一个最小值,输入连续的数,最大值自动按照(最小值+字符串数组长度-1)来确定
private void updateData(int newMinValue, String[] display) {
int oldMinValue = picker.getMinValue();
int oldMaxValue = picker.getMaxValue();
int oldSpan = oldMaxValue - oldMinValue + 1;
int newMaxValue = newMinValue + display.length - 1;
int newSpan = newMaxValue - oldMinValue + 1;
if (newSpan > oldSpan) {
picker.setMinValue(newMinValue);
picker.setDisplayedValues(display);
picker.setMaxValue(newMaxValue);
} else {
picker.setMinValue(newMinValue);
picker.setMaxValue(newMaxValue);
picker.setDisplayedValues(display);
}
}
调用:
updateData(1,new String[]{"1","2","3","4","5","6"});
updateData(7,new String[]{"7","8","9","10","11","12","13","14"});
回调://与之前相同
@Override
public void onValueChange(NumberPickerView picker, int oldVal, int newVal) {
String[] content = picker.getDisplayedValues();
if (content != null)
Toast.makeText(getApplicationContext(),"oldVal : " + oldVal + " newVal : " + newVal + "\n" +
getString(R.string.picked_content_is) + content[newVal - picker.getMinValue()], Toast.LENGTH_SHORT)
.show();
}
from numberpickerview.
int newSpan = newMaxValue - oldMinValue + 1
是不是应该改为
int newSpan = newMaxValue - newMinValue + 1
from numberpickerview.
对,我刚才测了一下,这个地方写错了
from numberpickerview.
if (newSpan > oldSpan) {
picker.setMinValue(newMinValue);
picker.setDisplayedValues(display);
picker.setMaxValue(newMaxValue);
}
是不是应该改为
if (newSpan > oldSpan) {
picker.setMinValue(newMinValue);
picker.setMaxValue(newMaxValue);
picker.setDisplayedValues(display);
}
from numberpickerview.
你的代码出错了吗?
picker.setMaxValue(newMaxValue);
picker.setDisplayedValues(display);
这两行代码如果交换位置,就可能出现"越界",因为如果新的数据的长度小于旧的数据,如果先设置maxValue,此时没有设置旧的数据displayvalues,maxValue可能就会超过旧数据的长度边界值,因此不要交换两者的顺序,这和android自带的NumberPicker的用法是一致的
from numberpickerview.
如果按我的改法就出现了:java.lang.IllegalArgumentException: (maxValue - mMinValue + 1) should not be greater than mDisplayedValues.length now (maxValue - mMinValue + 1) is 6 and mDisplayedValues.length is 4
如果按你的就出现了: java.lang.IllegalArgumentException: mMaxValue - mMinValue + 1 should not be greater than mDisplayedValues.length, now ((mMaxValue - mMinValue + 1) is 12 newDisplayedValues.length is 6, you need to set MaxValue and MinValue before setDisplayedValues(String[])
from numberpickerview.
都是从9,10,11,12---->1,2,3,4,5,6
from numberpickerview.
完整步骤:
1,2,3,4,5,6,7,8,9,10,11,12---->1,2,3,4,5,6---->9,10,11,12(---->1,2,3,4,5,6)
括号中的崩溃
from numberpickerview.
嗯,我刚才测了一下,确实是出错,这和设置minValue、maxValue、displayValues的顺序有关系,我稍微改了一下调用顺序,避免了这个出错问题,如下:
if (newSpan > oldSpan) {
picker.setDisplayedValues(display);//更改这两个函数的调用顺序
picker.setMinValue(newMinValue);//更改这两个函数的调用顺序
picker.setMaxValue(newMaxValue);
} else {
picker.setMinValue(newMinValue);
picker.setMaxValue(newMaxValue);
picker.setDisplayedValues(display);
}
我这边暂时是不出错了,异常主要是因为minValue的值先改变了,再设置displayValue时会对比检查其长度与(maxValue-minValue),如果后者大于前者,就会主动抛出异常,这样也是便于差错
from numberpickerview.
Related Issues (20)
- 什么情况下会导致这个问题呢?getWillPickIndexByGlobalY illegal index : 178 getOneRecycleSize() : 171 mWrapSelectorWheel : false HOT 1
- 两个NumberPickerView做联动并且第二个滚动并快速点击有个问题 HOT 3
- 设置纯数字1-999奔溃 HOT 2
- How to add sound when scroll or selected like ios HOT 3
- 该如何设置取消两端选项的缩放效果呢? HOT 2
- 有个BUG请关注下 HOT 6
- BUG HOT 2
- 文字可以定义垂直显示样式 HOT 3
- 大佬,能设置数字小于10时,十位补0显示吗? HOT 2
- 請問有設定字體大小的Function嗎,像是SetTextSizeNormal() HOT 1
- 您好,最新的1.2.0版本有个Bug HOT 7
- should not be greater than mDisplayedValues.length now
- 偶现 getWillPickIndexByGlobalY illegal index : 2 getOneRecycleSize() : 2 mWrapSelectorWheel : true
- JCenter sunset is announced; please republish library version(s) to Maven Central HOT 2
- jcenter跑路了,能把项目同步到 mavenCentral 或者 jitpack 上吗 HOT 1
- np_textAlign doesn't do anything
- 必现错误getWillPickIndexByGlobalY illegal index : 5 getOneRecycleSize() : 1 mWrapSelectorWheel : false HOT 1
- No fading effect to the edges
- 时常遇到getWillPickIndexByGlobalY 的 IllegalArgumentException
- Check number save accounts
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from numberpickerview.