Zähler für Auswahlmöglichkeiten bei mehreren Spinnern

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Zähler für Auswahlmöglichkeiten bei mehreren Spinnern im Android Codeschnipsel im Bereich Android App Entwicklung.
T

TimWeiland

Neues Mitglied
Hallo zusammen,
ich hab in meiner App 12 Spinner mit jeweils denselben Antwortmöglichkeiten "A", "B" und "C". Ich möchte sowohl einen Zähler für die Anzahl auf wie vielen Spinnern etwas ausgewählt wurde, wie auch die Anzahl wie oft "A", "B" oder "C" ausgewählt wurde. Bislang habe ich das folgendermaßen gelöst:

Code:
   priorität4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                value = adapterView.getItemAtPosition(i);
               switch (i) {
                    case 0:
                        VP=0;
                        PCOUNTER.setText(String.valueOf(VP));
                        VA=0;
                        AACOUNTER.setText(String.valueOf(VA));
                        VB=0;
                        VC=0;
priorität4.setBackgroundColor(Color.WHITE);
break;
                    case 1:
                        VP=1;
                        PCOUNTER.setText(String.valueOf(VP));
                        VA=1;
                        AACOUNTER.setText(String.valueOf(VA));
                        VB=0;
                        VC=0;
                        priorität4.setBackgroundColor(Color.YELLOW);
                        break;

                    case 2:
                        VP=1;
                        PCOUNTER.setText(String.valueOf(VP));
                        VA=0;
                        AACOUNTER.setText(String.valueOf(VA));
                        VB=1;
                        VC=0;
                        priorität4.setBackgroundColor(Color.RED);
                        break;

                    case 3:
                        VP=1;
                        PCOUNTER.setText(String.valueOf(VP));
                        VA=0;
                        AACOUNTER.setText(String.valueOf(VA));
                        VB=0;
                        VC=1;
                        priorität4.setBackgroundColor(Color.GREEN);
                        break;
               }
                SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
                editor.putInt("Priorität4", i);
                editor.commit();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                VP=0;
                PCOUNTER.setText(String.valueOf(VP));
                VA=0;
                AACOUNTER.setText(String.valueOf(VA));
                VB=0;
                VC=0;
                priorität4.setBackgroundColor(Color.WHITE);
            }
        });
Zusätzlich wird dann noch mit einer simplen Addition ausgerechnet wie oft halt entsprechend "A", "B" oder "C" vorkommen.
Mein Problem: Es muss eine elegantere Lösung dafür geben, denn wenn ich das auf alle 7 Activities mit jeweils 12 Spinnern übertrage habe ich insgesamt fast 100 Variablen, die ich mit Shared Preferences speichern müsste. Es gibt doch sicher eine Möglichkeit auszulesen wie oft A ausgewählt wurde usw. Also zumindest in einer Activity. Es wäre Prima wenn mir da jemand weiterhelfen könnte.
PS: Ich habe das bislang nur mit einem Spinner gemacht daher auch nur sowenig Code. Wäre ja überflüssige Arbeit, dass was ich nicht behalten möchte erstmal auf alle Spinner zu übertragen.
 
swa00

swa00

Moderator
Teammitglied
@TimWeiland

Eine elegante Lösung wäre das implementieren einer Singletonklasse.
Dort führst du dann auch deine Sicherungen durch.

Anm: Wenn ich deine bisherigen Beiträge verfolge, dann würde ich Dir empfehlen , dich in die OOP einzuarbeiten
und dein Grundwissen zu verbessern.
 
Zuletzt bearbeitet:
J

jogimuc

Stammgast
Hallo
Eine Singeltonklasse finde ich schon eine gute Wahl, um auf deine Variablen auch aus verschieden Activitys zugriff zu haben. Nur wenn du es wieder nach dem beenden der App auch wider aktuell haben willst. Dann Shared Pref oder SQLite.

Auch verstehe ich nicht wieso du 4 Variablen brauchst. Du brachst doch nur die Pos in eine int Variable zu speichern. Wert 0 – 3. Am Anfang sind sie alle bei 0.
Auch würde ich da wohl ein Array vielleicht sogar ein zweidimensionales benutzen.
Erste die Activitys von 0-6 zweite deine Spinner 0-11.
Dann hast du alles in einer Variablen.