I'm using IconItemRenderer in a mobile project. I placed some logging in the class and noticed that layoutContents was being called twice for each item when the view was being created.
I have also noticed that the show event fires twice for the views as well.
This is obviously inefficient. I don't think it's anything I've done (I'm being careful not to modify properties in events like creationComplete and viewActivate), but can I prevent the duplicated effort?
An itemRenderer will be created once for every visible element of your dataProvider . So, make sure that you're not confusing different dataProvider instances. It sounds like you've already covered this.
The layoutContents() method is called from the updateDisplayList() method of the mobile itemRenderers. updateDisplayList() may be called a lot during the "lifecycle" of the component. You'll have to step through the full component lifecycle to figure out exactly what is going on. More information here.
You'll have to figure out what is invalidating the display list forcing updateDisplayList() to execute again.
Whether this introduces ineffeciencies into the application is open to interpretation. It depends what is going on in the updateDisplayList()/layoutContents() method.