Android 数组错误异常,如何填写ArrayList?

Android 数组错误异常,如何填写ArrayList?,android,listview,arraylist,listadapter,Android,Listview,Arraylist,Listadapter,这不可能是这里的问题 D/AndroidRuntime﹕ 关闭虚拟机 ---------坠机开始 java.lang.IndexOutOfBoundsException:索引3无效,大小为3 private void setupContButton(){ findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onC

这不可能是这里的问题

D/AndroidRuntime﹕ 关闭虚拟机 ---------坠机开始 java.lang.IndexOutOfBoundsException:索引3无效,大小为3

   private void setupContButton(){
    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ArrayList<String> list= new ArrayList<String>();
            Log.e("SIZE  LIST", "list: " + list.size());
               for (i = 0 ; i <= list.size(); i++){
                   list.add(adapter.getItem(i).getName());
                   Log.e("Info", "Position: " + 1 + " Content: " + list.get(i) + " SIZE: " + list.size());
               }
        }
    });}
private void setupContButton(){
findviewbyd(R.id.button).setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
ArrayList=新建ArrayList();
Log.e(“大小列表”,“列表:+LIST.SIZE());

对于(i=0;i数组索引从
0
枚举,因此当数组为
3
元素时,不能有索引
3
,因此此行中的条件错误:

for (i = 0 ; i <= list.size(); i++){

for(i=0;i您看到的异常非常明确:

java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
这意味着您使用的索引对于您拥有的容器来说太大了

在您的特殊情况下,这是因为以下代码(稍加解释):


注意:我还更改了
更改for循环条件
for(I=0;IEException告诉您确切的问题。您试图从只有索引0、1、2的数组中获取索引3。我可以从这里看到问题(提示:修复for循环)。更改
for(i=0;i user2747599
列表
用于索引,而
java
中的索引以
0
开头,因此如果
大小()
返回
3
然后它只包含索引
0,1和2
处的元素。因此,在访问
3
处的元素时,会抛出
java.lang.IndexOutOfBoundsException
。@StackOverflowerr:事实上,我一开始也这么认为。但是,这与列表大小没有什么关系,因为列表最初是空的(size==0)。问题在于,根据我(更新后)的回答,用于控制循环的对象是错误的。它应该由适配器大小控制,而不是由列表控制。您的解决方案不起作用在arraylist中添加一些值,如:-list.add(“some value”);如果我加入循环,则我的列表将从0(list.size()=0)增长(i=0;i
list.size()==0
表示您的列表是空的。进入循环没有任何意义您的解决方案当然不起作用。如果您正确应用它,我的列表将从0(list.size()=0)增长,如果我加入循环,则将为(i=0;i
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
ArrayList<String> list= new ArrayList<String>();
for (i = 0 ; i <= list.size(); i++)
    list.add(adapter.getItem(i).getName());
ArrayList<String> list= new ArrayList<String>();
for (i = 0 ; i < adapter.getCount(); i++)         // NOT list.size()
    list.add(adapter.getItem(i).getName());