繁体   English   中英

哪个更有效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM