android中的java.lang.IndexOutOfBoundsException

时间:2015-04-10 08:12:54

标签: java android arraylist

我在android中有2个arraylist。

ArrayList名称;大小为5

ArrayList Mobile;大小为2

姓名:{A,B,C,D,E};

移动:{4,2};

这意味着只有两个人有手机号码。

在这里,我运行循环5次,但是我遇到了 java.lang.IndexOutOfBoundsException ,我知道移动设备没有全部5次重复,所以它发生了。

但是如何处理这个异常。

我在textview中显示五个名称,在移动隐藏中显示2个移动相应和另外3个textview,通过catch块上的异常,IndexOutOfBoundsException。

try{
    for(int i=0; i< Name.size(); i++){
       name.setText(Name.get(i).toString);
       if(Mobile.get(i)!=null){
       mobile.setText(Mobile.get(i).toString);
       }else{
       mboile.setVisibility(View.GONE);
       }
    }
}catch (Exception e) {
                    e.printStackTrace();
                }

2 个答案:

答案 0 :(得分:3)

您必须检查Mobile是否在位置i处有元素。 如果他的size大于我,那就有了。

for (int i =  0; i < Name.size(); i++){
    name.setText(Name.get(i).toString);
    if (i < Mobile.size()) {
       mobile.setText(Mobile.get(i).toString);
    } else {
        mobile.setVisibility(View.GONE);
    }
}

注意:格式化您的问题,以便更容易阅读。

答案 1 :(得分:1)

这将失败

if(Mobile.get(i)!=null){

i大于长度

请参阅javadocs

  

抛出:IndexOutOfBoundsException - 如果索引超出范围   (index&lt; 0 || index&gt; = size())