Fix bug 5399568 - ListView check states inconsistent after data set change

ListView tracks check states in two ways, by position and by ID if an
adapter reports stable IDs. After a data set change there was no
guarantee that the position checked mapping was consistent.

Fix up the position mapping from the ID mapping after a data set
change. In the future this should happen by asking the adapter where a
given ID is now located, but this will require new API and not all
adapters in the wild will implement it. For now make a best guess by
searching in a limited window around the item's last known position.

Change-Id: I70ba89eb103c438b0410c3c6d066acc3918459f9
1 file changed