1) keep the cursor in the same physical position when the list updates
2) look at the item key (which is just a 64bit integer these days) of the item that was selected before refreshing the list and search for that item in the new list, causing it to be the new highlighted item
one more possible fix in the backend (but will only help with some cases):
scan the old list and the new list for being equal and don't send updates in that case
two possible fixes, both in unity:
1) keep the cursor in the same physical position when the list updates
2) look at the item key (which is just a 64bit integer these days) of the item that was selected before refreshing the list and search for that item in the new list, causing it to be the new highlighted item
one more possible fix in the backend (but will only help with some cases):
scan the old list and the new list for being equal and don't send updates in that case