2016-11-07 26 views
2

我使用下面的代码在我的Android应用:有没有一种方法可以将这些语句简化为几行代码?

Button selectedButton = null; 
     if(mSelectedTimePeriod.equals(ChartImageData.LAST_1_DAY)){ 
      selectedButton = mButton1; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_5_DAYS)){ 
      selectedButton = mButton2; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_30_DAYS)){ 
      selectedButton = mButton3; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_3_MONTHS)){ 
      selectedButton = mButton4; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_6_MONTHS)){ 
      selectedButton = mButton5; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_1_YEAR)){ 
      selectedButton = mButton6; 
     }else if(mSelectedTimePeriod.equals(ChartImageData.LAST_5_YEARS)){ 
      selectedButton = mButton7; 
     } 
     return selectedButton; 

有没有一种方法,我可以让mbutton1像mbutton [i]和LAST_1_DAY = LAST_ [I] _day?并把它放在一个循环或一些东西,所以当选择后续按钮时,数字相应地加载?

+6

'Map '应该这样做。 –

+0

使用开关盒 – Saravana

+0

@Saravana在这里,'switch'会产生几乎相同的代码,这不会简化任何事情,而应该避免使用它。 – thatguy

回答

3

您可以创建一个字符串和按钮的映射。

Map<String, Button> mapping = new HashMap<String, Button>() 
    mapping.put(ChartImageData.LAST_1_DAY, mbutton1); 
    mapping.put(ChartImageData.LAST_5_DAYS, mbutton2); 
    .... 

然后你就可以做了。

 return mapping.get(mSelectedTimePeriod); 

如果您将来添加一个额外的按钮,这也使得它更容易。您只需将其添加到地图即可。

+3

或者消除循环和'if',然后使用'return mapping.get(key);' –

+1

'return mapping.get (mSelectedTimePeriod);'。使用'Map'的目的是为了避免迭代和if-else-if阶梯。 –

+0

更新了我的答案以包含该内容。你是对的!谢谢 – j1nrg

相关问题