2016-11-07 2 views
2

Ich verwende den folgenden Code in meinem Android-App:Gibt es eine Möglichkeit, diese Anweisungen auf nur ein paar Zeilen Code zu vereinfachen?

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; 

Gibt es eine Möglichkeit ich die mbutton1 etwas wie mbutton machen kann [i] und LAST_1_DAY = LAST_ [i] _DAY? und alles in eine Schleife legen oder so, wenn eine nachfolgende Schaltfläche ausgewählt wird, wird die Nummer dementsprechend geladen?

+6

'Map ' sollte es tun. –

+0

Schalter verwenden – Saravana

+0

@Saravana Hier würde "switch" fast den gleichen Code ergeben, dies vereinfacht nichts, sollte aber eher vermieden werden. – thatguy

Antwort

3

Sie könnten eine Zuordnung von String und Buttons erstellen.

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

Und dann können Sie tun.

Dies erleichtert auch, wenn Sie in Zukunft eine zusätzliche Schaltfläche hinzufügen. Alles, was Sie tun müssen, ist, es der Karte hinzuzufügen.

+3

Oder eliminiere die Schleife und 'if' und benutze' return mapping.get (key); ' –

+1

' return mapping.get (mSelectedTimePeriod); '. Der Sinn der Verwendung einer "Map" besteht darin, Iteration und If-Else-If-Leiter zu vermeiden. –

+0

aktualisierte meine Antwort, um das einzuschließen. Du hast recht! danke – j1nrg

Verwandte Themen