2016-07-31 47 views
4

我有一些共享相同的根绑定,有没有办法缩短代码与一个while循环遍历所有这些?优化java任务

RadioGroup G1, G2.. ... ...; // At class scope 
TextView result1... .. ..; 


/** ... */ 
public void bindViews() { 
    G1 = (RadioGroup) findViewById(R.id.radioGroup1); 
    G2 = (RadioGroup) findViewById(R.id.radioGroup2); 
    G3 = (RadioGroup) findViewById(R.id.radioGroup3); 
    G4 = (RadioGroup) findViewById(R.id.radioGroup4); 
    G5 = (RadioGroup) findViewById(R.id.radioGroup5); 
    G6 = (RadioGroup) findViewById(R.id.radioGroup6); 
    G7 = (RadioGroup) findViewById(R.id.radioGroup7); 
    G8 = (RadioGroup) findViewById(R.id.radioGroup8); 
    G9 = (RadioGroup) findViewById(R.id.radioGroup9); 
    G10 = (RadioGroup) findViewById(R.id.radioGroup10); 
    G11 = (RadioGroup) findViewById(R.id.radioGroup11); 
    G12 = (RadioGroup) findViewById(R.id.radioGroup12); 
    G13 = (RadioGroup) findViewById(R.id.radioGroup13); 
    G14 = (RadioGroup) findViewById(R.id.radioGroup14); 
    G15 = (RadioGroup) findViewById(R.id.radioGroup15); 
    G16 = (RadioGroup) findViewById(R.id.radioGroup16); 
    G17 = (RadioGroup) findViewById(R.id.radioGroup17); 
    G18 = (RadioGroup) findViewById(R.id.radioGroup18); 
    G19 = (RadioGroup) findViewById(R.id.radioGroup19); 
    G20 = (RadioGroup) findViewById(R.id.radioGroup20); 
    .... 
} 

是否可以使用反射来减少冗余代码? 我的兴趣主要是让它更容易绑定> 40RadioGroupsTextViews

+1

我觉得一个for循环会更适合这里,其实。 – RamenChef

+0

在这种情况下,您可以使用增量索引的循环原因执行此操作,但是如果您想要一些常规操作,则故事是不同的! –

+1

可能重复的[Android,从字符串获取资源ID?](http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string) –

回答

4

你可以试试这个

int count = 40; 
RadioGroup G[] = new RadioGroup[count]; 
for(int i = 1 ; i < count ; i++){ 
    String temp = "radioGroup" + i; 
    int id = getResources().getIdentifier(temp, "id", getPackageName()); 
    G[i] = (RadioGroup) findViewById(id); 
} 
+0

这很好,除了getResources()。getIdentifier '实际上比上面标记为 –

+0

的重复问题要慢@谢谢@ cricket_007,我不知道。我会尝试先执行它,然后我会更新我的代码。再次感谢。 – Shubh

+0

@ShubhamNandanwar任何想法为什么id是-1? – Alejandro