2016-08-02 8 views
-1

Ich habe den folgenden Code:Wie erkennt man den auf dem Spinner ausgewählten Gegenstand?

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    Object item = parent.getItemAtPosition(position); 
    Toast.makeText(this, "You selected " +item.toString(), Toast.LENGTH_SHORT).show();  

} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 

    Toast.makeText(this, "You didn't select any preset", Toast.LENGTH_SHORT).show(); 

} 

Und die folgende Array:

<string-array name="presets_array"> 
    <item>Light Car</item> 
    <item>Medium Car</item> 
    <item>Heavy Car</item> 
    <item>Van</item> 
    </string-array> 

Es funktioniert gut, wenn ich Licht Auto wählen zeigt es den richtigen Text und so weiter mit den anderen. Aber ich möchte mehr Dinge tun, wenn ausgewählte Sache ist Van, Gewichtswert ändern, wenn Medium Auto, andere Kosten, etc.

Ich denke, ich muss einen Schalter verwenden, aber ich bin mir nicht sicher, wie es funktioniert.

Antwort

2

Es gibt einige Optionen. Sie sollten das Beste wählen, die zu Ihnen passt ...

Gerade Position

Gute Leistung überprüft, aber wenn Sie Array Reihenfolge ändern, müssen Sie die Anweisung switch

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Object item = parent.getItemAtPosition(position); 

    Toast.makeText(this, "You selected " + item.toString(), Toast.LENGTH_SHORT).show(); 

    swith(position) { 
     case 0: 
      // CODE for Light Car 
      break; 
     case 1: 
      // CODE for Medium Car 
      break; 
     case 2: 
      // CODE for Heavy Car 
      break; 
     case 3: 
      // CODE for Van 
      break; 
    } 
} 

Nachbestellung String-Überprüfung

Niedrige Leistung, da Sie im schlimmsten Fall mehrmals Strings vergleichen müssen.

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Object item = parent.getItemAtPosition(position); 

    Toast.makeText(this, "You selected " + item.toString(), Toast.LENGTH_SHORT).show(); 

    if(item.toString().equals("Light Car")) { 
     // CODE 
    } else if(item.toString().equals("Medium Car")) { 
     // CODE 
    } else if(item.toString().equals("Heavy Car")) { 
     // CODE 
    } else if(item.toString().equals("Van")) { 
     // CODE 
    } 
} 
+0

Die erste funktioniert gut für mich. Vielen Dank. –

0

Sie Code ähnlich wie dieser Code in onItemSelected Methode schreiben:

switch (item) 

{ Fall Light Car: // TODD break;

Fall Van: // TODO Bruch; .......

}

+0

Aber was genau stelle ich nach jedem Fall? Light Car, Van ... werden nicht erkannt. Ich kann R.array.presets_array, aber nicht jede Zeichenfolge setzen, sie erscheinen nicht unter R.string. –

+0

Ich habe aus Ihrer Frage verstanden, dass Sie verschiedene Dinge mit verschiedenen ausgewählten Objekten aus dem Spinner machen möchten, können Sie mir sagen, was Sie mit jedem ausgewählten Objekt machen möchten, und wenn Sie mir einen Screenshot Ihres Layouts aus der App geben könnten . und der Xaml-Code. – RadiBarq

Verwandte Themen