OnItemSelectedListener ausgelöst bei Spinner-create

  • Antworten:5
lampenlampen
  • Forum-Beiträge: 15

08.12.2016, 14:57:20 via Website

Hallo,

ich habe ein kleines Problem mit meinem Spinner und dem OnItemSelectedListener.
Und zwar hab ich eine RecyclerView, die ich vom User filtern lassen möchte.
Deshalb gibt es einen Menüitem, wonach ein Bottom Sheet erscheint, in dem man auswählen kann, welches Feld man nach welchem Wert filtern lassen will. Die möglichen Werte werden in einem Spinner angezeigt.
Da es drei wichtige Informationen gibt, gibt es auch 3 Spinner, mit jeweils einem OnItemSelectedListener. Um den Filter wieder abzuwählen ist vor den Spinners jeweils seine Checkbox platziert, in dem man den jeweiligen Filter de-/aktivieren kann.
Wenn ein Wert im Spinner ausgewählt wird durch den Listener automatisch die jeweilige Checkbox auf 'true' gesetzt.
Das Problem ist jetzt, dass immer wenn das Bottom Sheet erstellt wird, der OnItemSelectedListener ausgelöst wird, und die Checkbox aktiviert wird, auch wenn die RecyclerView nicht gefiltert war.

Vielen Dank

Grüße

— geändert am 08.12.2016, 14:57:52

Antworten
swa00
  • Forum-Beiträge: 3.704

08.12.2016, 15:15:03 via Website

Hallo Lampen .

versuche mal , vor dem "Füllprocess" kurzeitig den Listener auszuschalten

Bsp.
myItem .setOnClickListener(null);

// Inhalt ändern

myItem.setOnClickListener (myListener);

— geändert am 08.12.2016, 15:15:56

Liebe Grüße - Stefan
[ App - Entwicklung ]

lampenlampen

Antworten
lampenlampen
  • Forum-Beiträge: 15

08.12.2016, 15:21:39 via Website

Ich hab grad die Methode, in der ich die Voreinstellungen setze auskommentiert und es wird trotzdem die Checkbox auf 'true' gesetzt. Ich habe jetzt in dem OnItemSelectedListener mal den StackTrace printen lassen und da erscheint auch keine meiner Methoden. :'(

Also ich habe jetzt zusätzlich einen OnTouchListener auf den Spinner gesetzt und in dem wird die Checkbox aktiviert. Dann funktioniert es, aber vorhin hätte man halt noch abbrechen können, in dem man außerhalb der Spinnerliste auf dem Bildschirm klickt - das geht jetzt nicht mehr.

Trotzdem Danke

— geändert am 08.12.2016, 15:32:00

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

08.12.2016, 16:33:02 via Website

Du kannst in der onTouch auch einfach ein boolean Flag setzen "touched" und in der ItemSelected guckst du dann ob das true ist. So habe ich es mal in einem Projekt gelöst.

lampenlampen

Antworten
lampenlampen
  • Forum-Beiträge: 15

08.12.2016, 16:38:55 via Website

großes Problem,

hab gerade bemerkt, dass wenn ich einen onTouchListener auf dem Spinner Objekt habe, die Auswahlliste nicht mehr erscheint bei Draufklicken. Ich schätze mal, da der OnTouchListener fängt den Klick ab.
Weiß jemand wie manuell die Auswahlliste anzeigen lassen kann?

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

09.12.2016, 13:16:30 via Website

Bei mir klappt das. Habe es so:

onTouch(){
   spinnerClicked = true;
   return false;
}

onItemSelected(){
   if(spinnerClicked){
      spinnerClicked = false;
      // mache je nachdem welches item geklickt wurde
   }
}

Antworten