Android spinner.item index als integer ?

noobee

Aktives Mitglied
ist es möglich, dindex eines selected item eines spinners als zahl ausgegeben zu bekommen ? ich weiß, dass es
Java:
spinner.getSelectedItem()
gibt. doch ich kann das in einer if-abfrage iwie nicht verarbeiten.

ich hab n button, welcher irgend was tun soll, je nachdem welches item im spinner ausgewählt ist.
Java:
if(mySpinner1.getSelectedItem() == 0){

     //tue was
}
if(mySpinner1.getSelectedItem() == 1){

     //tue was anderes
}
...
...
...
 
Zuletzt bearbeitet:
danke. aber es geht nicht so recht. wenn ich das eintippe

Java:
int position = spinner01.getSelectedPostion();

bzw mit strg+leertaste vervollständigen lasse, wird es erst gar nicht angezeigt. mein spinner01 steht auch nicht in der "intellisense" liste mit drin...
 
so, getselecteditemposition funzt 🙂 endlich mal n kleiner erfolg. aber das nächste prob lässt natürlich nicht lang auf sich warten:

ich kann zwischen zwei spinnern auswählen. je nach auswahl soll eben eine bestimmte berechnung stattfinden. gegeben ist eine zahl, die ja nach selecteditemposition der beiden spinner anders berechnet werden soll.

Java:
public class HalloAndroidActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button button2;
        button2 = (Button)findViewById(R.id.button2);
        button2.setOnClickListener(this);
    }
    ///////////////////////////////////////////////////////////
    ///
    /// Button Berechnung
    ///
    ///////////////////////////////////////////////////////////
	public void onClick(View v) {

		Spinner spin01 = (Spinner)findViewById(R.id.Spinner01);
		int spin01pos = spin01.getSelectedItemPosition();
		Spinner spin02 = (Spinner)findViewById(R.id.Spinner02);
		int spin02pos = spin01.getSelectedItemPosition();		

		EditText dob = (EditText)findViewById(R.id.editText1);
		String text = dob.getText().toString();
		int eingabe = Integer.parseInt(text);
		//dob.setText("abc", TextView.BufferType.EDITABLE);
					
		if((spin01pos == 0) & (spin02pos == 0))
			{
			EditText dob2 = (EditText)findViewById(R.id.editText2);
			dob2.setText(String.valueOf(eingabe * 1), TextView.BufferType.EDITABLE);
			}
		if((spin01pos == 0) & (spin02pos == 1))
			{
			EditText dob2 = (EditText)findViewById(R.id.editText2);
			dob2.setText(String.valueOf(eingabe * 2), TextView.BufferType.EDITABLE);
			}
		if((spin01pos == 0) & (spin02pos == 2))
		{
		EditText dob2 = (EditText)findViewById(R.id.editText2);
		dob2.setText(String.valueOf(eingabe * 3), TextView.BufferType.EDITABLE);
		}
	}
}

ich bekomme aber immer nur die berechnung von
Java:
if((spin01pos == 0) & (spin02pos == 0))
egal was ich bei dem 2. spinner einstelle.
 
Das lässt sich sowieso besser lösen. Du möchtest, abhängig vom Item-Index aus dem zweiten Spinner rechnen, tu es auch ;-)

Code:
 // [...]
        if((spin01pos == 0))
            {
            EditText dob2 = (EditText)findViewById(R.id.editText2);
            dob2.setText(String.valueOf(eingabe * (spin02pos + 1)));
            }
// vergiss die anderen IFs

Außerdem rate ich dir, die ganzen Views im onCreate nach dem setContentView in Instanzvariablen zu speichern und die nicht jedes Mal wenn du sie brauchst erneut zu suchen. Dauert ja jedes Mal bis die richtige View gefunden wird.
 
Außerdem rate ich dir, die ganzen Views im onCreate nach dem setContentView in Instanzvariablen zu speichern und die nicht jedes Mal wenn du sie brauchst erneut zu suchen. Dauert ja jedes Mal bis die richtige View gefunden wird.
danke, werd ich ändern.

Das lässt sich sowieso besser lösen. Du möchtest, abhängig vom Item-Index aus dem zweiten Spinner rechnen, tu es auch
nein, das war nur ein beispielcode. das
Java:
dob2.setText(String.valueOf(eingabe * (spin02pos + 1)));
geht leider nicht. im "richtigen" programm soll
bei
Java:
spin02pos == 0
* 1000 gerechnet werden,

bei
Java:
spin02pos == 1
* 2.75 gerechnet werden ,

bei
Java:
spin02pos == 2
* 15 gerechnet werden usw...

aber selbst bei deiner eingabe
Java:
dob2.setText(String.valueOf(eingabe * (spin02pos + 1)));
wird nicht neu berechnet wenn ich die spinner.selectedItemPosition im laufenden betrieb neu auswähle ???:L
 
Zuletzt bearbeitet:
musst du vielleicht noch
Java:
dob2.invalidate();
einbauen? Außerdem, hat das einen speziellen Grund warum du & und nicht && verwendest? && ist im Normalfall besser da hier im Falle dass der erste Ausdruck false bereits abgebrochen wird und bei & noch der zweite Ausdruck ausgewertet wird.
 
ok, hat alles supi geklappt. ich hab noch eine frage zu spinner.

ich konnte keine einstellung finden, items aus dem spinner auszugrauen bzw nicht anklickbar zu machen oder zu deaktivieren/aktivieren. hab ich die option übersehen oder ist es standardmäßig nicht möglich und nur mit viel code machbar??
 
Tut mir leid, so intensiv hab ich mich damit nicht beschäftigt.

Läßt sich aber wahrscheinlich mit eher mehr als weniger Code regeln. Für was auch Optionen anzeigen die nicht verwendbar sind, entferne die einfach aus der Liste.
 

Zurück
Oben