Your code is very weird.

For example in rosterRecibido() you iterate over "contactos", yet you only ever use the same item.
The inner loop creates empty items for not apparent reason.

Your code in cambioRoster() does a lot of findItems() calls. Probably OK, but still very wastful.

Cheers,
_