我已经制作了一个Android应用程序,因为我得到一个ImageUrls的arrayList,我想通过使用这个arrayLis在android中创建一个自动化的lsideShow,我试过如下使用线程但它给了我arrayIndexOPutOfBounds异常,它去了到第二张图片abd然后给出异常,请帮我保存,我的代码如下:
resultArray = new ArrayList<String>();
iv_paly.setOnClickListener(new OnCLickListener()){
@Override
OnClick(){
imageLoader.displayImage(resultArray.get(1), proImage, options);
proImage.postDelayed(swapImage, 3000);
}
MediaPlayer introSound, bellSound;
Runnable swapImage = new Runnable() {
@Override
public void run() {
for (int i = 0; i <= resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}
}
};
}
答案 0 :(得分:5)
更改
for (int i = 0; i <= resultArray.size(); i++) {
成:
for (int i = 0; i < resultArray.size(); i++) {
如果您不太关心索引,也可以使用for(String s: resultArray){...}
......
答案 1 :(得分:2)
删除“=”,
for (int i = 0; i < resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}
答案 2 :(得分:1)
由于数组在java中是zerobased,你必须写<resultArray.size();
而不是<=resultArray.size();
for (int i = 0; i < resultArray.size(); i++) {
答案 3 :(得分:1)
试试这个
for (int i = 0; i < resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}
答案 4 :(得分:0)
Array的索引是基于零的,所以如果你的数组大小是10,它应该从[0]到[9]计数。在这种情况下,你永远不会有[10]元素。在你的for循环中,你从[0]迭代到[10],这导致ArrayIndexOutOfBounds
错误,因为你想要你的数组中的第11个元素(并且不存在)。
所以基本上改变了
for (int i = 0; i <= resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}
到
for (int i = 0; i < resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}