我有一个整数ArrayList
和几个按钮。每个按钮对应一个索引,ArrayList
我想将每个按钮对应索引的值显示为它的文本。我的一切都与按钮行为等有关。问题是当我将一个按钮的值(索引值)与另一个交换时,它会开始为我交换的每个值显示 0。我总是会用其他东西交换 0。
因此,如果我有按钮:b1、b2、b3 的值分别为 0、1、2,我交换 b1 和 b2 的值。结果变为 0, 0, 2。这是交换函数:
public static void swap(ArrayList<Integer> list, int firstInd, int secondInd) {
int temp = list.get(firstInd);
list.set(firstInd, list.get(secondInd));
list.set(secondInd, temp);
}
这种交换方法有效,我已经使用打印语句等独立地对其进行了测试,并且没有重复的 0,并且所有其余数字都保留在列表中。
以下是相关代码:
// class declaration
static ArrayList<Integer> numList = new ArrayList<Integer>();
// onCreate
// initialize ArrayList
// displays initial values on buttons
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.first: {
switchButtonValues(R.id.first);
b1.setText(String.valueOf(numList.get(0)));
updateButtonStates();
break;
}
case R.id.second: {
switchButtonValues(R.id.second);
b2.setText(String.valueOf(numList.get(1)));
updateButtonStates();
break;
}
// etc for all buttons
public static void switchButtonValues(int buttonNum) {
switch(buttonNum) {
case R.id.first: {
if(numList.get(1) == 0) {
swap(numList, 0, 1);
} else if (numList.get(3) == 0) {
swap(numList, 0, 3);
} else {
}
break;
}
case R.id.second: {
// etc. for the buttons
显示初始值的按钮是正确的。所以我知道 ArrayList 正在正确初始化。发生交换时会出现问题。所有的值都以某种方式被 0 覆盖。
即使 0 覆盖了其他值,按钮行为也能正常工作,因为它知道“真正的”0 在哪里。我也清理了项目。
为什么会这样?有人有想法么?