in my current project i have dealt with spinner class which has been customized from almost every aspect possible. Thus i have gained some detailed aspects as i deal with it . So i will start with the part it shows why it is flawed.

1\_There is no default listener that will be fired on pop up window/layout/dialog created-showed(layout inflated) event. There are some workarounds such as ontouch listener on spinner, then check if on touch finish happened in spinner area, then you know popup will be shown but still not reliable since you can fill popup with async task..

2\_On item selected event does not fire when same index is selected again. This is really annoying since i may be updating the adapter depending on other conditions which will change current selection and list order etc... Of course there is a workaround way by creating own spinner class and adding it in xml like com.myproject.customspinner etc.....([Spinner : onItemSelected not called when selected item remains the same](https://stackoverflow.com/questions/10854329/spinner-onitemselected-not-called-when-selected-item-remains-the-same))

3\_There is no *working functional* OnClickListener and OnItemLongTouchListener event for spinner.

4\_Changing Spinner DropDown list divider element's attributes such as color requires more labor than changing all dropdrown and spinner' background views itself which is very absurd.

5\_Spinner the name itself is very absurd =))).

**So what can i use instead of Spinner? Which is best way to go?**