[英]Which is more efficient
我想过要分配一组连续的按钮。 我喜欢这种样式,但是用find by id进行单个按钮会更有效吗?
for(int i = 0; i < NanoConstants.NUMBER_OF_BUTTONS;i++){ //assign buttons
Button addButton = (Button) findViewById(getResources().getIdentifier("project_button_" + String.valueOf(i), "id", getPackageName()));
addButton.setText(getResources().getStringArray(R.array.project_names)[i]);
addButton.setOnClickListener(this);
mProjectButtons.add(addButton);
}
感谢大家 !
由于此代码似乎在应用程序启动时运行一次,因此我将避免尝试对其进行微优化。 坚持使代码更具可读性的风格。
不,不是。 for
循环与展开版本一样高效,可读性更好,并减少了代码和复杂性。
您可以将按钮添加到groupview中,并使用getChildAt循环其子级,然后检查视图是否为按钮,如下所示:
int childCnt = viewGroup.getChildCount();
for(int i=0;i<childCnt;i++){
View view = viewGroup.getChildAt(i);
if(view instanceof Button){
Button button = (Button)view;
addButton.setText(getResources().getStringArray(R.array.project_names)[i]);
addButton.setOnClickListener(this);
mProjectButtons.add(addButton);
}
}
即使现在添加了按钮,也无需更改此代码,只需将其添加到布局中并在数组中添加一个值即可。
但正如Elliott Frisch所说:
由于此代码似乎在应用程序启动时运行一次,因此我将避免尝试对其进行微优化。 坚持使代码更具可读性的风格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.