bindView inside a custom CursorAdapter is called 6-7 times for each row.
There is no direct way to control when bindView is called. Android operating system does it as and when required it in order to properly measure and draw the layout. In this particular case the issue was caused by setting layout width to wrap_content in the ListView layout. Changing this to match_parent fully resolved the issue and bindView is now called only once for each ListView row.
Android Studio 2.2.2
Android SDK Version 23