This issue is really annoying. In my application, I encounter the issue in a similar way. Basically I have a list view to choose items and spinners for each item's values. With editable = false everything works, with editable = true I have logged the event subs that happen and can basically see the following:
1. I change the value for one item (up/down or direct edit)
2. I click on a new item in my listview (loss of focus for spinner, then the selectedindex changed should fire for listview). What should happen: The old item is saved (last selected index is available), then the value of the new is shown, then the new selected item is show.
what really happens:
3. The spinner's value field is at the value before changing it by the user (e.g. the default 0)
4. So the original, not the changed value is saved to the old item
5. The new value is loaded, and my code in theory should overwrite the value of the spinner
6. Instead, the value entered in step 1. is shown
I tried some workarounds, including extra writing the changed value from the newly selected item. Now the funny thing is: In debug compile mode it works, in release compile mode it does not work.
For me this looks like the events happen out of order, maybe there is some kind of race condition. Because of different execution speeds in release and debug mode, the race condition seems to decide correct in debug and wrong in release.
Fortunately I found this thread and now can set editable to false as workaround. Not my favourite solution, might prefer a text field then...
Maybe you would like to look into this again Erel.
PS. Sorry, cannot disclose the code. Hopefully the description helps to replicate it.