如何有效地将属性更改为 Android Studio 中的多个视图/按钮?

Posted

技术标签:

【中文标题】如何有效地将属性更改为 Android Studio 中的多个视图/按钮?【英文标题】:How do I efficiently change a property to multiple views/buttons in Android Studio? 【发布时间】:2018-07-11 01:17:18 【问题描述】:

我刚开始进行 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 个按钮呢?

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

【问题讨论】:

Android multiple Button color changes的可能重复 【参考方案1】:

你可以这样做:

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
        
    

【讨论】:

以上是关于如何有效地将属性更改为 Android Studio 中的多个视图/按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何成功地将我的默认合并工具实用程序更改为 opendiff

在R中有效地将反斜杠转换为正斜杠

如何更有效地将词汇存储在数组中?

如何在AngularJS网格中有条件地将列更改为文本框?

如何更有效地将嵌套列表扁平化为一个列表而不是使用 unlist 方法?

将 Android 磨损天气更改为摄氏度? [关闭]