Android Java ArrayList插入元素不起作用

时间:2012-06-19 21:08:19

标签: android insert arraylist

我有一个简单的Android程序,只有一个按钮和一个textview。单击该按钮时,会在ArrayList中插入一个数字。但是,它不起作用。如果改为添加,它可以正常工作。

package test_ad.com;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Test_adActivity extends Activity {
    ArrayList<Integer> al = new ArrayList<Integer>();
    Button myB;
    int i=0;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    myB = (Button) findViewById(R.id.button1);
    myTV = (TextView) findViewById(R.id.textView1);
    myB.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
            al.set(i,10*i);//insert an Integer at index i, but not working
            i++;
            if (i == 5)
                myTV.setText(al.toString());
        }
    });
}

}

2 个答案:

答案 0 :(得分:0)

只有当arraylist.size()大于你试图为其设置值的位置时,才能使用ArrayList.set()。

http://docs.oracle.com/javase/6/docs/api/java/util/List.html#set(int, E)

答案 1 :(得分:0)

已编辑 - 您添加了int i。第一段不再适用。

问题是ArrayLists是动态增长的,但你需要告诉它们有多大,或者告诉它们增长。如果ArrayList当前有5个元素,并且您尝试将项目设置为位置10,则应该获得IndexOutOfBoundsException。

您是否有理由不想使用add()方法? 如果你想继续使用set(),你还应该使用ensureCapacity()或size()来确保ArrayList足够大。

这两种方法都记录在http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html