android中的java.lang.IndexOutOfBoundsException

android中的java.lang.IndexOutOfBoundsException,java,android,arraylist,Java,Android,Arraylist,我在android中有2个arraylist 数组列表名称;尺寸为5的 arraylistmobile;尺寸为2的 及 名称:{A,B,C,D,E} Mobile:{4,2} 这意味着只有两个人有手机号码 在这里,我运行了5次循环,但我遇到了java.lang.IndexOutOfBoundsException,我知道mobile并没有所有的5项,所以它发生了 但是如何处理这个异常呢 我分别在textview和2个mobile中显示5个名称,并通过catch块上的on异常、IndexOutOfB

我在android中有2个arraylist

数组列表名称;尺寸为5的

arraylistmobile;尺寸为2的

名称:{A,B,C,D,E}

Mobile:{4,2}

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

在这里,我运行了5次循环,但我遇到了java.lang.IndexOutOfBoundsException,我知道mobile并没有所有的5项,所以它发生了

但是如何处理这个异常呢

我分别在textview和2个mobile中显示5个名称,并通过catch块上的on异常、IndexOutOfBoundsException显示移动隐藏的其他3个textview

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();
                }
试试看{
对于(int i=0;i
这将失败

if(Mobile.get(i)!=null){
i
大于长度时

抛出:IndexOutOfBoundsException-如果索引超出范围 (索引<0 | |索引>=size())


您必须检查Mobile是否在位置i处有元素。 如果他的
大小
大于i,则为

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);
    }
}
for(int i=0;i

注意:格式化您的问题,使其更易于阅读。

了解
尝试捕获块
您迭代大小为5的名称列表,但尝试从大小为2的移动设备获取对象