如何取消激活未按下的按钮

时间:2015-05-26 20:50:31

标签: java android arrays eclipse performance

我是一位非常缺乏经验的程序员,所以请不要因为我缺乏知识而忍受。

我有一个包含168个不同按钮的程序,每个按钮计算每次按下的次数。在按下或未按下所有按钮后,我需要停用并使那些没有按下的按钮变灰。到目前为止,我已经使用3D数组来存储按下每个按钮的次数,并制作了一个简单的代码:

if(a[0][0][0]<1)
{
    ImageButton button_a1=(ImageButton) findViewById(R.id.button1a);
    button_ca1.setEnabled(false);
    button_ca1.setAlpha(6);
}

唯一的问题是,由于每个buttonID不同,我必须分开168次。有没有办法将它变成一个不占用超过1000行代码的简单循环?

该程序使用Eclipse编写,用于Android应用。

1 个答案:

答案 0 :(得分:0)

如果所有按钮的布局相同,您可以使用getChildCount()

LinearLayout layout = setupLayout();
int count = layout.getChildCount();
View v = null;
for(int i=0; i<count; i++) {
    v = layout.getChildAt(i);
    if (v instanceof ImageButton) {
        v.setEnabled(false);
        v.setAlpha(6); 
    }
}

如果没有,只需使用所有按钮创建SetListArray并迭代它:

List<ImageButton> buttons = new ArrayList<ImageButton>();

// be sure buttons is visible in the method
// when creating the buttons put them inside the list

然后在你的方法中:

if(a[0][0][0]<1)
{
    // disable all buttons
    for(ImageButton button : buttons) {
        button.setEnabled(false);
        button.setAlpha(6);
    }
}