Android 数组错误异常,如何填写ArrayList?
这不可能是这里的问题 D/AndroidRuntime﹕ 关闭虚拟机 ---------坠机开始 java.lang.IndexOutOfBoundsException:索引3无效,大小为3Android 数组错误异常,如何填写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
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;ilist.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());