Mehrere Spinner mit OnItemSelected

  • 10 Antworten
  • Letztes Antwortdatum
K

k(L)ammerl

Neues Mitglied
4
Hallo liebe Android-Freunde!

Ich bin gerade dabei eine Applikation zu schreiben, die im Layout sehr viele Spinner beinhaltet.
Nun will ich, wenn sich einer meiner Spinner ändert, ein Event auslösen.

Meine Frage dazu:
Muss ich für jeden Spinner extra ein OnSelectionChanged-Event zuweisen, oder gibt es auch eine Möglichkeit, bei der ich Programmcode sparen kann und nicht ca. 60x "spinner.setOnItemSelectedListener(event)" schreiben muss?

Mfg Martin
 
60 Spinner? Klingt nicht vernünftig und schlecht konzipiert. Aber naja, nur meine Meinung.

Du kannst auch deine Layout-Childs durchgrasen, prüfen of diese Spinner sind (Stichwort: instanceof) und dann per Schleife die setOnClickListener setzen.
 
  • Danke
Reaktionen: k(L)ammerl
Jetzt bin ich neugierig:
was für eine App braucht denn 60 dropdown items?
 
Das interessiert mich auch... Martin, machs bitte nicht so spannend :)

Martin, zu viele Views, zu viele nested views etc. können im übrigen zu weiteren Problemen führen, unabhängig was du da zurecht schusterst, lass dir was einfallen, diesen Wulst zu beseitigen. Vielleicht gibt dir ja auch jemand einen Tipp, wenn wir wissen worum es sich handelt.
 
  • Danke
Reaktionen: k(L)ammerl
In meiner App geht es darum eine Liste für ein Würfel-Poker-Spiel zu erstellen, in der man seine Würfe einträgt und danach die Gesamtpunktezahl ermittelt wird, nachdem man in jedes Feld etwas eingetragen hat.

Nun können in einem Feld nur bestimmte Werte vorkommen. Da es insgesamt 11*5 Felder gibt, werden 55 Spinner benötigt.

Mfg Martin
 
Das heißt ich Würfel 5 mal pro Runde (bzw. 1mal mit 5 Würfeln)? Dann reichen auch ganz einfach 5 (!) Spinner zum Eintragen der Werte nach einer Runde. Die Werte aus den vorherigen Runden kannst zu zwischenspeichern oder anderweitig anzeigen, aber 55 Spinner, no way!
 
  • Danke
Reaktionen: k(L)ammerl
Ich würde das sogar ganz anders umsetzen ohne spinner
Einfach eine SurfaceView ind ein Layout reinpacken und dort die würfel als bitmaps platzieren wenn man einen Würfel anklickt kann man deren Wert eintragen(auch einfach 6 bitmaps präsentieren die man mit einen klick auswählen kann)

geht ganz easy einfach 6 Bitmaps für die Symbole einen für die Würfel mehr brauchst du erstmal nciht

und ein 5x11 Array für die werte(kannst sogar shorts benutzen das es nur 6 verschiedene werte geben wird)
 
  • Danke
Reaktionen: k(L)ammerl
Spiel:
Ich würfle 3x mit 5 Würfeln - wenn ich fertig bin trage ich ein. Das ganze 55x

Mir ist bewusst dass die App schlecht konzipiert ist. Jedoch ist sie nur zum Eigengebrauch weil ich dann die Liste nicht selbst zeichnen muss. :biggrin:

Das Problem liegt darin, dass wenn eine gewisse Spalte einen gewissen Wert erreicht, wird ein Bonus hinzugerechnet.
Diese Spalten müssen für den Spieler immer ersichtlich sein, da er sonst nicht weiß ob er den Bonus bekommt.

Beschreibung des angehängten Bildes:
In der 7. Spalte werden Spalte 1-6 zusammengezählt.
Wenn der Wert größer als 70 ist wird ein Bonus hinzugerechnet.

Der Spieler muss zu jeden Zeitpunkt des Spiels zumindest einen Überblick über die ersten 6 Spalten und 5 Zeilen haben.

Ich würde das sogar ganz anders umsetzen ohne spinner
Einfach eine SurfaceView ind ein Layout reinpacken und dort die würfel als bitmaps platzieren wenn man einen Würfel anklickt kann man deren Wert eintragen(auch einfach 6 bitmaps präsentieren die man mit einen klick auswählen kann)

geht ganz easy einfach 6 Bitmaps für die Symbole einen für die Würfel mehr brauchst du erstmal nciht
Nicht falsch verstehen - es geht nicht um die Würfel sondern um eine Liste in die man Werte einträgt.
 

Anhänge

  • 20150408_165604.jpg
    20150408_165604.jpg
    724 KB · Aufrufe: 325
Zuletzt bearbeitet:
du schreibst einfach alles in arrays wo nix steht rinfach eine -1


und das mit den bitmaps aussuchen ist doch viel eleganter imho und geht auch shcneller von der handhabung her?

teile die view in ein 5x12 raster, 5x11 Würfel und das letzte 12tel für andere buttons etc.

wurde das raster0,0 also ganz oben links berührt zeigst du mögliche symbole zum auswählen der spieler klcikt auf ein symbol und dessen wert wird im array [0][0] gespeichert bei raster 4,5 dann eben in [4][5] geht leicht von der hand und ist viel natürlicher


sit wie schon von reneph bemerkt auf jeden fall weniger schriebarbeit als deine idee mit den spinnern ansonsten halte dich an seine anmeerkung deine childs durchzugrasen und so automatisiert den listener setten
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: k(L)ammerl
Danke für die zahlreichen Tipps.

Habe noch nie mit Bitmaps gearbeitet - deswegen der komplizierte Weg.
Ich werde kurzfristig einfach die ganzen Spinner lassen da ich momentan nur wenig Freizeit habe.
Werde aber über den Lösungsvorschlag mit den Bitmaps nachdenken und vielleicht später alles ein wenig umbauen.
Das heißt ich würde für jede Möglichkeit die ich auswählen kann ein eigenes Bild brauchen dass ich dann in das Array speichere oder?
 
ne du brauchst nur 6 bitmaps für die symbole und ein würfel bitmap


du füllst an jeder stelle im raster einen würfel und je nachdem welche zahl im array steht eines der 6 Bitmaps oder halt die zahl wie auch immer

dafür müsstest du das ganze array dann vor dem zeichnen durchgehen und prüfen welche zahl drin steht und das entsprechende bitmap dafür malen

bei deiner app würde es sogar reichen nur zu zeichnen falls der bildschirm berührt wurde und sogar nur einen bestimmten bereich zu übermalen (falls raster [1][1] geändert wurde malst du es nur an dieser stelle neu und setzt den wertb auch nur an der korrespondierenden stelle im array das erspart das ganze arry durchzugehen)

...falls du soetwas ims inne ahst später kannst du auf mcih zurückkommen ich arbeite nur mit surfaceviews in meinen apps und hab shcon etwas erfahrung gesammelt und die API*s rund um Bitmap Canvas,Surfaceview etc mindestens schon 20 mal durchgegrast in den letzten 4 Monaten
 
  • Danke
Reaktionen: k(L)ammerl
Zurück
Oben Unten