哪个更有效率

时间:2015-07-10 23:12:56

标签: java android arrays

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

谢谢大家!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以在组视图中添加按钮,并使用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);
  }
}

即使现在,如果您添加了一个按钮,则无需更改此代码,只需将其添加到布局中并在数组中添加值即可。
但正如艾略特弗里施所说:

  

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