Android Studio for 循环

新手上路,请多包涵

我有以下代码,想知道是否有任何方法可以将以下代码放入 for 循环中,这样只要我在我的代码中执行几次即可

 if (Q1o1.equals("null")){
     button1.setVisibility(View.INVISIBLE);
 }else{
     button1.setVisibility(View.VISIBLE);
     button1.setText(Q1o1);
 }
 if (Q1o2.equals("null")){
     button2.setVisibility(View.INVISIBLE);
 } else{
     button2.setVisibility(View.VISIBLE);
     button2.setText(Q1o2);
 }
 if (Q1o3.equals("null")){
     button3.setVisibility(View.INVISIBLE);
 } else{
     button3.setVisibility(View.VISIBLE);
     button3.setText(Q1o3);
 }
 if (Q1o4.equals("null")){
     button4.setVisibility(View.INVISIBLE);
 } else{
     button4.setVisibility(View.VISIBLE);button4.setText(Q1o4);
 }
 if (Q1o5.equals("null")){
     button5.setVisibility(View.INVISIBLE);
 } else{
     button5.setVisibility(View.VISIBLE);
     button5.setText(Q1o5);
 }
 if (Q1o6.equals("null")){
     button6.setVisibility(View.INVISIBLE);
 } else{
     button6.setVisibility(View.VISIBLE);
     button6.setText(Q1o6);
 }
 if (Q1o7.equals("null")){
     button7.setVisibility(View.INVISIBLE);
 } else{
     button7.setVisibility(View.VISIBLE);
     button7.setText(Q1o7);
 }

每个 if 语句检查需要作为按钮文本的相关变量是否不为空,然后隐藏它或将该变量放入按钮内并显示按钮。如何为每个循环使用不同的变量来创建 for 循环?

原文由 Jacques Celliers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 683
2 个回答

也许像这样声明数组:

 String[] stringArray = {*your strings here*};
ButtonView[] buttonArray = {*your buttons here*};

和这样的循环:

 for(int i = 0; i < stringArray.length; i++){
    String thisString = stringArray[i];
    ButtonView thisButton = buttonArray[i];
    if(thisString.equals(null)){
        thisButton.setVisibility(View.INVISIBLE);
    }else{
        thisButton.setVisibility(View.VISIBLE);
        thisButton.setText(thisString);
    }
}

原文由 Carlton 发布,翻译遵循 CC BY-SA 3.0 许可协议

您所要做的就是定义两个 Arralists,其中一个用于按钮,另一个用于变量:

 ArrayList<Button> buttonsList = new ArraList<>();

将所有按钮添加到此列表中:

 buttonsList.add(button1);
....

对你的变量做同样的事情并将它们放在另一个字符串数组列表中

ArrayList<String> labelsList = new ArrayList<>();

你的 for 循环应该是这样的:

 for(int i = 0; i < labelList.size(); i++) {
    if(!labelList.get(i).equals("null")) {
        buttonsList.get(i).setVisibility(View.VISIBLE);
        buttonsList.get(i).setText(labelList.get(i));
    } else {
          buttonsList.get(i).setVisibility(View.INVISIBLE);
    }
}

原文由 AouledIssa 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题