In meinem aktuellen Projekt habe ich mich mit der Spinner-Klasse beschäftigt, die aus fast allen möglichen Aspekten angepasst wurde. Dadurch habe ich einige Detailaspekte gewonnen. Also werde ich mit dem Teil anfangen, der zeigt, warum es fehlerhaft ist.
1_Es gibt keinen Standard-Listener, der bei einem Popup-Fenster / Layout / Dialog erzeugt-gezeigt (Layout aufgeblasen) ausgelöst wird. Es gibt einige Problemumgehungen wie Ontouch Listener auf Spinner, dann überprüfen, ob auf Touch Finish im Bereich Spinner passiert, dann wissen Sie, Popup wird angezeigt, aber immer noch nicht zuverlässig, da Sie Popup mit asynchronen Task füllen können.
2_Auf Objekt ausgewähltes Ereignis wird nicht ausgelöst, wenn der gleiche Index erneut ausgewählt wird. Das ist wirklich ärgerlich, da ich den Adapter abhängig von anderen Bedingungen aktualisieren kann, was die aktuelle Auswahl und Listenreihenfolge usw. ändern wird. Natürlich gibt es einen Workaround-Weg, indem ich eine eigene Spinner-Klasse erstelle und sie in xml wie com.myproject.customspinner hinzufügt usw. ..... ( Spinner: onItemSelected nicht aufgerufen wenn das ausgewählte Element gleich bleibt )
3_Es gibt kein funktionierendes OnClickListener- und OnItemLongTouchListener-Ereignis für den Spinner.
4_Changing Spinner DropDown list divider elements Attribute wie Farbe erfordert mehr Arbeit als alle Dropdrown und Spinner 'Hintergrundansichten selbst zu ändern, was sehr absurd ist.
5_Spinner der Name selbst ist sehr absurd =))).
Was kann ich anstelle von Spinner verwenden? Welcher Weg ist am besten?
Sie können ein benutzerdefiniertes Spinner mit ListPopupWindow zu einem TextView erstellen bedeutet, wenn ein TextView auf ein ListPopupWindow geöffnet wird wie Spinner Dropdown-Liste und Sie können ein Element auswählen. Wenn Sie brauchen, werde ich Ihnen dabei helfen.
%Vor%Überprüfen Sie diesen Code und ändern Sie ihn entsprechend Ihrer Anforderung. Wenn Sie irgendein Problem gefunden haben, bin ich hier, um Ihnen zu helfen. :)
Tags und Links android spinner android-spinner alternate