Android 为什么下面的代码会给出ArrayIndexOutofBounds异常?

Android 为什么下面的代码会给出ArrayIndexOutofBounds异常?,android,exception,Android,Exception,我想用一个图像、两个文本字段和一个按钮创建一个自定义列表视图。虽然,我已经处理了两个文本字段和按钮,但插入图像会带来问题。有人能告诉我我的代码有什么问题吗? 请参阅代码 MainActivity.java 添加另一个与字符串大小相等的图像 java.lang.IndexOutOfBoundsException:索引4无效,大小为4 您的列表中有4个元素,但您正试图访问第五个元素 请记住,列表元素从索引零开始,因此要访问列表中的第四个元素,您需要检索索引元素3,问题在于。。。。 您没有3个相同大小

我想用一个图像、两个文本字段和一个按钮创建一个自定义列表视图。虽然,我已经处理了两个文本字段和按钮,但插入图像会带来问题。有人能告诉我我的代码有什么问题吗? 请参阅代码

MainActivity.java
添加另一个与字符串大小相等的图像

java.lang.IndexOutOfBoundsException:索引4无效,大小为4

您的列表中有4个元素,但您正试图访问第五个元素

请记住,列表元素从索引零开始,因此要访问列表中的第四个元素,您需要检索索引元素3

,问题在于。。。。 您没有3个相同大小的列表。 改变它

List<Integer> imag=new ArrayList<Integer>(Arrays.asList(
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher));
List imag=new ArrayList(Arrays.asList(
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.可牵引ic_发射器);

List imag=new ArrayList(Arrays.asList(
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.可牵引ic_发射器);

就是这样…

但在位置变量中,它不接受4。这里有3个大小相等的列表。@Ankitara我看到两个列表有5个元素,第三个列表有4个元素。我的问题是什么?为什么我要增加它的大小?在适配器中,它正在访问该位置上不存在的值。因为它的大小是4。这就是为什么它只能在(size-1)
name.remove(位置)之前访问该值的原因;最后,移除(位置);图像移除(位置)
imag.remove(位置)
造成了问题。
package com.apna.mycontacts;

import java.util.ArrayList;
import java.util.List;

import com.apna.mycontacts.R.layout;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends ArrayAdapter<String> 
{
Context con;
    ArrayList<String> name,Last;
    List<Integer> imag;
    public CustomAdapter(Context con,ArrayList<String> first, ArrayList<String> last,List<Integer> image) {
        // TODO Auto-generated constructor stub

        super(con,R.layout.second,first);
        name=first;
        this.con=con;
        imag=image;
        Last=last;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater li=(LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView=li.inflate(R.layout.second,null);
        TextView tv1=(TextView) convertView.findViewById(R.id.t1);
        TextView tv2=(TextView) convertView.findViewById(R.id.t2);
        ImageView im=(ImageView) convertView.findViewById(R.id.imageView1);

        Button b=(Button) convertView.findViewById(R.id.button1);
        tv1.setText(name.get(position));
        tv2.setText(Last.get(position));
        im.setImageResource(imag.get(position));

        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                name.remove(position);
                Last.remove(position);
                imag.remove(position);
                notifyDataSetChanged();
            }
        });
        return convertView;
    }


}
07-18 13:41:40.372: E/AndroidRuntime(755): FATAL EXCEPTION: main
07-18 13:41:40.372: E/AndroidRuntime(755): java.lang.IndexOutOfBoundsException: Invalid index 4, size is 4
07-18 13:41:40.372: E/AndroidRuntime(755):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
07-18 13:41:40.372: E/AndroidRuntime(755):  at java.util.ArrayList.get(ArrayList.java:304)
07-18 13:41:40.372: E/AndroidRuntime(755):  at com.apna.mycontacts.CustomAdapter.getView(CustomAdapter.java:55)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.widget.AbsListView.obtainView(AbsListView.java:2143)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1246)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.widget.ListView.onMeasure(ListView.java:1158)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.view.View.measure(View.java:15518)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:666)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.view.View.measure(View.java:15518)
07-18 13:41:40.372: E/AndroidRuntime(755):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
List<Integer> imag=new ArrayList<Integer>(Arrays.asList(
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher));
List<Integer> imag=new ArrayList<Integer>(Arrays.asList(
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher));