簡體   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