Android Studio If-Anweisung Spinner Item

  • Antworten:52
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 46

22.01.2015, 10:41:14 via Website

Hallo.
Mein Problem ist:
Ich habe einen Spinner, der mit einem Array gefüllt ist. Nun will ich, wenn ein bestimmtes Item bei dem Drop-Down Menü ausgewählt wird, eine Aktion durchführen. Mein Lösungsansatz war : "
if(array.contains(0)){
TextLaden();
}
Passiert aber nichts :-(
Ich würde mich über Hilfe freuen! :-)
Mit freundlichen Grüßen

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.168

22.01.2015, 10:50:07 via App

Hallo,

du brauchst dafür eine onItemClick methode im einem click listener.
Dann weisst du welches Item geklickt wure (position)
über eine switch kannst du dann eine Aktion durchführen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 46

22.01.2015, 16:39:10 via Website

Danke für deine schnelle Antwort! :-)
Leider habe ich sehr wenig Erfahrung mit "onItemClick". Es wäre nett wenn du bzw. ein anderer hier ein Beispiel machen könnte.
Beispielsweise mit einem Spinner und ein Array z.B. die Planeten, "Jupiter", "Uranus", etc.. Und dann halt wenn man auf z.B. "Jupiter" klickt soll was passieren, z.B. "Passieren();" :D
Vielen Dank :-)

— geändert am 22.01.2015, 16:47:55

Antworten
  • Forum-Beiträge: 46

22.01.2015, 19:00:47 via Website

Vielen Dank für dein Engagement, aber trotzdem verstehe ich nur Bahnhof. Außerdem will ich etwas mit einer If-Anweisung machen und in dem Beispiel von deinem Link wird einfach nur der Text ausgegeben. Ich habe mir jetzt gedacht man könnte dieses "spinner1.getSelectedItem()" übernehmen und in die Klammern eine "0" einsetzen, damit er den ersten Eintrag nimmt, funktioniert aber auch nicht. Ich hoffe mir kann weiter geholfen werden :(
Vielen Dank.

Antworten
  • Forum-Beiträge: 2.498

23.01.2015, 07:44:40 via App

Nochmal vollständig...
myspinner.setOnClickListener(new onClickListener {
@Override
public void OnClick {
if (myspinner.getSelectedItem == 0)){
textladen();
}
}
}
ich garantiere nicht dafür dass das richtig ist, nur so aus dem Kopf geschrieben. Aber müsste so in die Richtung gehen.

— geändert am 23.01.2015, 07:46:01

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
  • Forum-Beiträge: 46

23.01.2015, 15:46:17 via Website

Vielen Dank für deine Antwort Rexxar :-)
Wenn ich "==0" nehme kommt: Error:(58, 47) error: incomparable types: Object and int.
Wenn ich dann den Namen vom item schreibe, kommt zwar kein Fehler, passiert aber trotzdem nichts :(
Außerdem verstehe ich auch nicht, warum du mitttendrin "@Override" schreibst...
Mit freundlichen Grüßen.

Antworten
  • Forum-Beiträge: 1.904

23.01.2015, 15:47:37 via App

Ist das nicht der OnItemSelectedListener?! Dann wird dir schon sofort die Position oder so gegeben.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 46

23.01.2015, 15:48:36 via Website

Sven R.

Ist das nicht der OnItemSelectedListener?! Dann wird dir schon sofort die Position oder so gegeben.

Könntest du vielleicht ein Beispiel machen?

Antworten
  • Forum-Beiträge: 46

23.01.2015, 16:56:46 via Website

Rexxar

Funktioniert genau wie der OnClickListener aus meinem Beispiel.

Eventuell musst du irgendwie schreiben
(Pseudocode, nur nen denkanstoß) if selected item == R.myitemlist.item1...

Ich bin jetzt verwirrt :-D :(

Antworten
  • Forum-Beiträge: 46

23.01.2015, 17:21:50 via Website

Rexxar

Naja hast du die Items in einem Ressource File eingegeben also in einer XML?

ja, strings.xml

Antworten
  • Forum-Beiträge: 2.498

23.01.2015, 17:27:43 via App

Strings.XML :O Nein, da gehören die gar nicht hin bzw. nur deren Namen....
Du brauchst nen Menu Ressource File wo dann z.b.sowas drinsteht...

 item android:id="@+id/help"
          android:icon="@drawable/ic_help"
          android:title="@string/help" /
/menu

Ich musste alle Schrägstriche weg machen, sonst macht Markdown was es will. Baut bitte einfach eine Vernünftige Code Funktion ein APIT

— geändert am 23.01.2015, 17:31:40

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
  • Forum-Beiträge: 1.904

23.01.2015, 17:48:06 via App

Jetzt haste was verwechselt. 😉 menu ist für Menüs und nicht für Spinner.

Ich mache heute Abend mal ein Beispiel.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 46

23.01.2015, 17:58:33 via Website

Sven R.

Jetzt haste was verwechselt. 😉 menu ist für Menüs und nicht für Spinner.

Ich mache heute Abend mal ein Beispiel.

Danke an alle :D
Ja das wäre echt nett von dir, danke :-)
Mit freundlichen Grüßen

Antworten
  • Forum-Beiträge: 1.904

23.01.2015, 21:55:04 via Website

Der untenstehende Code ist nicht getestet worden; es geht ums Prinzip.

Mit Listener:

spinner.setOnItemSelectedListener(new OnItemSelectedlistener() {

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

String text = parent.getItemAtPosition(pos).toString();

//oder einfach was mit der Position "pos" machen

switch(pos) {

case 3:

//irgendwas machen

break;

default:
break;

}

//oder:

Toast.make...(... "Position: " + pos);

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
    //kommt eigentlich nicht vor, muss aber überschrieben werden
}

}
)

Oder ohne:

int pos = spinner.getSelectedItemPosition();

Dokumentation: Spinner welcher von AdapterView erbt.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 46

24.01.2015, 13:18:57 via Website

Sven R.

Der untenstehende Code ist nicht getestet worden; es geht ums Prinzip.

Mit Listener:

spinner.setOnItemSelectedListener(new OnItemSelectedlistener() {

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

String text = parent.getItemAtPosition(pos).toString();

//oder einfach was mit der Position "pos" machen

switch(pos) {

case 3:

//irgendwas machen

break;

default:
break;

}

//oder:

Toast.make...(... "Position: " + pos);

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
  //kommt eigentlich nicht vor, muss aber überschrieben werden
}

}
)

Oder ohne:

int pos = spinner.getSelectedItemPosition();

Dokumentation: [Spinner][1] welcher von [AdapterView][2] erbt.

[1]: http://developer.android.com/reference/android/widget/Spinner.html
[2]: http://developer.android.com/reference/android/widget/AdapterView.html

Vielen Dank für deine Hilfe, es bringt mich schon ein wenig weiter, aber er streicht mir die zeile
"spinner.setOnItemSelectedListener(new OnItemSelectedlistener()" falsch an. Er kennt irgendwie nicht "setOnItemSelectedListener" obwohl ich oben in den bibliotheken das implementiert habe. Aber das ging oben auch nur mit AdapterView.OnItemSelectedListener"...

Antworten

Empfohlene Artikel