java - 如何在 Android Studio 中有效地将属性更改为多个 View /按钮?

标签 java android view mobile-development

我正在开始进行 Android 开发,但我很难找到答案,因为我可能不知道如何正确表达事物。我想要做的是一旦我单击任何按钮,将所有按钮设置为不可见。解决这个问题的简单方法是:

Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);

setInvisible(button1);
setInvisible(button2);
setInvisible(button3);
setInvisible(button4);

但是我觉得这违背了编程的 DRY 原则。我的意思是如果有 100 个按钮怎么办?

经过一番思考后,我想我可以使用一个循环,并让 i 成为每个按钮的数字的占位符。这样它就会循环遍历每一个。但是我不确定使用什么方法。

最佳答案

您可以按如下方式进行:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private int[] btnIds = new int[]{R.id.button1, R.id.button2, R.id.button3, R.id.button4};
    private List<Button> buttonList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_group);

        for(int i = 0; i < btn.length; i++){
            buttonList.add(findViewById(btnIds[i])); 
            buttonList.get(i).setOnClickListener(this);
        }
        ...
    }
    ...
    @Override
    public void onClick(View v) {
        //Either check for button ids or simply:
        for (Button button : buttonList) {
            button.setVisibility(View.INVISIBLE);//or View.GONE
        }
    }
}

关于java - 如何在 Android Studio 中有效地将属性更改为多个 View /按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51275913/

相关文章:

java - 为什么从字符串转换日期时Java时区不同?

java - OutputStream 和 Writer 有什么区别?

java - 在TextureView中添加按钮(Android/Java)

php - 将android应用程序连接到mysql数据库

java - Android 我如何每分钟向我的服务器发出 GET 请求?

java - XML 的 Eclipse 表单编辑器

android - 编译 ApiDemos Android 4.4

Android - 正在发生但未显示的 View

iphone - 具有自定义标题颜色和图像的 UITabBarItem

ios - swift 2 错误 : new() is unavailable in Swift: use object initializers instead