1

我正在努力显示有关 textview 的信息。我有两个表,每个表都包含信息列表。如果我点击“table A”按钮,它会显示第一个信息,如果我再次点击它,它会显示第二个信息。然后,如果我单击“table b”按钮,则会显示 b 的第一个信息,并且随着点击次数的增加而增加。但是如果我再次点击“table a”按钮,那么它必须显示第二个信息,而不是第三个信息。我不知道该怎么做。请帮我。我是新的。我的一段代码如下

case "table a":
    if (j>4) {
        j=1;
    }
    text.setText(String.valueOf(j));
    j++;
    Toast.makeText(getApplicationContext(), 
            "A table information", Toast.LENGTH_SHORT).show();
    break;

case "table b":
    if (i>6) {
        i=1;
    }
    text.setText(String.valueOf(j));
    i++;
    Toast.makeText(getApplicationContext(), 
            "B table information", Toast.LENGTH_SHORT).show();
    break;

我面临的问题是,如果我点击“table a”。它显示了第一个信息。然后,如果我单击“表 b”,则会显示表 b 的第一个信息。然后,如果我单击“表 a”,它会显示第二个。如果我从“表 b”返回到“表 a”,我希望它显示第一个信息。请给点建议。

4

1 回答 1

0

Java 默认是从零开始的,因此如果你重置一个数组,你应该将值设置为 0,而不是 1。

if(j>4){
   j=0;
}

据我了解,如果您切换回它,您希望显示之前在表 A 上显示的相同内容。最好的方法是跟踪活动状态,并且只有在活动状态是当前状态时才更改值。最好的方法是使用某种枚举。这段代码可能需要几个 tweeks,例如使用 TABLE_SELECTED.A 而不仅仅是 TABLE_SELECTED,但它应该可以在完成这些调整后工作。

private enum TABLE_SELECTED{A,B};
TABLE_SELECTED activeTAble=A;
case "table a":  if(aIndex>4){
                aIndex=0;
            }
            text.setText(String.valueOf(aIndex));
            if(activeTable==A)
                aIndex++;
            activeTable=A
                Toast.makeText(getApplicationContext(), "on clicked", Toast.LENGTH_SHORT).show();

case "table b":   if(bIndex>6){
                bIndex=1;
            }
            text.setText(String.valueOf(bIndex));
            if(activeTable==B)
                bIndex++;
            activeTable=B
                Toast.makeText(getApplicationContext(), "on clicked", Toast.LENGTH_SHORT).show();
于 2013-11-05T19:12:24.013 回答