我正在尝试向ArrayList添加一个按钮,但是当我指定索引时,会出现错误,指出索引超出范围。
我像这样启动数组:
ArrayList<Button> buttons = new ArrayList<Button>();
我有一个Integer变量“order”,表示按钮的优先级。当按钮优先级为0时,该按钮应该是数组中的第一个值。
例外情况出现在以下声明中:
buttons.add(order,btn);
编辑:
order的值大于ArrayList的大小。我正在动态创建按钮。我怎样才能指定数组的大小?
答案 0 :(得分:1)
检查文档中的ArrayList add方法.....它告诉可能是什么原因......
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(int,E)
订单的价值可能超过ArrayList的大小。在将订单添加到列表之前打印订单值将有助于...
答案 1 :(得分:1)
如果索引大于add
的大小,则不能ArrayList
给定索引处的元素。我想文件清楚地说明了这一点。
答案 2 :(得分:1)
.add(int index, E object)
方法会在以下情况下抛出IndexOutOfBoundsException
:
index < 0 || index > size()
。
在调用方法之前检查订单变量的值。
答案 3 :(得分:0)
如果您已经知道阵列的最终大小,我建议您在创建阵列时设置容量 像这样:&#34; ArrayList buttons = new ArrayList(25);&#34; 25是你的数组的元素数,从0到索引24,到qvoid索引越界错误我也建议你填充你的数组,然后你在指定索引处写button.add(index,element)已经是一个元素它将要做的是将现有元素移动到下一个位置(如果元素的索引是0,添加后将是1),而应该尝试使用这种方式预先存在的buttons.set(index,element)元素将替换为您要添加的元素