2015-07-10 71 views
0

这是我想要分配一组连续按钮的东西。我喜欢这种风格,但用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); 
    } 

谢谢大家!

回答

4

由于此代码在应用程序启动时似乎运行一次,因此我会避免尝试对其进行微优化。坚持让代码最具可读性的风格。

1

不,它不会。 for循环与展开版本一样高效,对可读性更好,并且减少代码和复杂性。

0

您可以在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); 
    } 
} 

即使是现在,如果你添加一个按钮没必要更改此代码,只需将其添加到布局中并在数组中添加一个值即可。
但正如艾略特·弗里施说:

因为这个代码出现到应用运行一次启动时我就 避免尝试微优化。坚持使 代码最具可读性的风格。