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

安吉·阿罗拉(Ankit Arora)

我想用一个图像,两个文本字段和一个按钮创建一个自定义列表视图。虽然,我已经处理了两个文本字段和按钮,但是插入图像却出现了问题。谁能告诉我代码中的问题是什么?看到代码...

MainActivity.java

package com.apna.mycontacts;

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

import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
ListView lv;
ArrayList<String> first= new ArrayList<String>(Arrays.asList("Ankit","Abhishek","Pinak","Arun","AK"));
ArrayList<String> last= new ArrayList<String>(Arrays.asList("Arora","Bhardwaj","jakhar","jadav","AK"));
List<Integer> imag=new ArrayList<Integer>(Arrays.asList(
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher));
Button add;
CustomAdapter cd;
TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView) findViewById(R.id.listView1);
        cd=new CustomAdapter(MainActivity.this,first,last,imag);
        tv=(TextView) findViewById(R.id.textView1);
    add=(Button) findViewById(R.id.button1);
    add.setOnClickListener(this);
    lv.setAdapter(cd);
    }


    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent in=new Intent(MainActivity.this,Add.class);
        startActivityForResult(in,5);
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==5)
    {
        String a=data.getStringExtra("fname");
        String b=data.getStringExtra("lname");
        String c=data.getStringExtra("image");
        tv.setText(c);
        first.add(a);
        last.add(b);
        cd.notifyDataSetChanged();

    }
    }
}

CustomAdapter.java

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)
SRB禁令

这是问题所在。...您没有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<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));

而已...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么下面的代码显示NameError?

为什么下面的代码输出是这样的

在下面的代码中,为什么会提示“OUCH”?

为什么下面的代码无法输出Hello World?

为什么输出是这在下面的Java代码?

为什么下面的Parse代码没有返回错误?

为什么下面的代码不打印出质数

为什么下面的Java代码会给出StackOverflow错误?

为什么下面的代码会导致excel崩溃?

为什么下面的代码打印出10而不是null?

为什么下面的代码不切换面板?

为什么下面的代码编译没有错误?

为什么下面的代码输出是“找不到”而不是“找到”?

为什么下面的 ScopedThread 代码不调用线程执行?

为什么下面的代码无法解除对SIGINT信号的阻止

为什么下面的python代码会抛出内存错误?

为什么下面的.htaccess代码无法正常工作

为什么下面的代码会抛出错误?

为什么下面的代码有语法错误?

为什么下面的代码是这样的Big O符号?

为什么下面的 3 行代码返回 1?

为什么下面的代码输出“ Dollars”而不是“ 2 dollars”?

为什么下面的代码会产生分段错误

为什么下面的代码打印垃圾值?

为什么下面的python代码不起作用?

为什么下面的 Agda 代码不能编译?

为什么下面的代码会打印堆栈跟踪,为什么 return 语句中的 a.toString() 没有给出错误或异常?

下面的代码什么时候抛出空指针异常?(也欢迎更高效的替代代码)

下面的代码行是做什么的?