1

我正在用最后插入的元素覆盖 ArrayList 中的所有元素。如果我将数字 1,2,3,4,5,6 的数组插入第一个元素,然后将 7,8,9,10,11,12 插入第二个元素,我最终会用来自第二个元素的值。我最终得到一个包含两个元素的 7,8,9,10,11,12 的列表。我查看了其他一些答案,从我收集的信息来看,这与添加引用而不是值有关,但我尝试了很多没有成功的事情。我只在用尽我的选择后才尝试发布问题。任何帮助将不胜感激,并提前致谢。

这是我遇到问题的应用程序的相关部分。

private View.OnClickListener submitListener = new View.OnClickListener() {

    ArrayList<int[]> tempArrayList = new ArrayList<int[]>();
    int[] ticketArray = new int[6];
    int counter = 0;
    int tempCounter = 0;
    PowerballPoolManagerApplication app = new PowerballPoolManagerApplication();

    @Override
    public void onClick(View view) {

        for (EditText editText : editTextList) {

            if (!editText.getText().toString().matches("")) {

                int currentNumber = Integer.parseInt(editText.getText().toString());
                ticketArray[tempCounter] = Integer.parseInt(editText.getText().toString());
                counter++;
                tempCounter++;

                if (counter > 0 && counter % 6 == 0) {

                    tempArrayList.add(ticketArray);
                    tempCounter = 0;
                } 
4

1 回答 1

1

从事物的直接外观来看,您正在向两个元素添加相同的数组。如果您希望数组是唯一的,您需要克隆它,或者在每次迭代时单独构建它。

这意味着创建您的ticketArray内部循环检查您的编辑文本值。

于 2013-10-17T16:56:16.883 回答