I have this java code:
tgia = new ThumbsGalleryAdapter(this, profilePositionsOverlay.items);
and I get this error:
The constructor ThumbsGalleryAdapter(SharePositionMapActivity, List) is undefined
SharePositionMapActivity.java
/com.shopzeus.android.majorforms.activity.MainActivity/src/com/shopzeus/android/majorforms/activity
line 114 Java Problem
Constructor of ThumbsGalleryAdapter is:
public ThumbsGalleryAdapter(Activity aActivity, List<ThumbsGalleryItem> aItems)
Type of profilePositionsOverlay.items:
List<SharedPositionMapItem>
The name ThumbsGalleryItem refers to an interface:
public interface ThumbsGalleryItem {
public String getTitle();
public String getRemotePath();
}
Finally, SharedPositionMapItem is a class that implements ThumbsGalleryItem:
private static class SharedPositionMapItem extends OverlayItem implements ThumbsGalleryItem
The question is, of course: why List<SharedPositionMapItem> is not type compatible with List<ThumbsGalleryItem>? Because SharedPositionMapItem implements ThumbsGalleryItem, I would expect them to be compatible. What is the solution?
For more details see:
http://codeidol.com/java/javagenerics/Subtyping-and-Wildcards/The-Get-and-Put-Principle/
and this
Explanation of the get-put principle