我是一位非常缺乏经验的程序员,所以请不要因为我缺乏知识而忍受。
我有一个包含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
应用。
答案 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);
}
}
如果没有,只需使用所有按钮创建Set
,List
或Array
并迭代它:
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);
}
}