2015-07-10 60 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); 
    } 
} 

即使是現在,如果你添加一個按鈕沒必要更改此代碼,只需將其添加到佈局中並在數組中添加一個值即可。
但正如艾略特·弗裏施說:

因爲這個代碼出現到應用運行一次啓動時我就 避免嘗試微優化。堅持使 代碼最具可讀性的風格。