The problem comes when you inflate view: it's the same single instance that is used throughout the list, so when your asynchronous loading is complete, the image is changed when the viewpager is trying to paint a different item using the same imageView. Here is how I fix mine.
1)Create a class named ViewHolder
class ViewHolder {
public ImageView image;
}
2) As soon as you finish inflating, create new ViewHolder object and bind it.
ViewHolder holder = new ViewHolder();
holder.image = (ImageView) imageLayout.findViewById(R.id.image_item_pager);
After that, you can use holder.image
as normal ImageView
.
Hope this help.