【发布时间】:2016-11-06 20:56:28
【问题描述】:
在我的主要活动中,我有两个列表:
private List<Feed> feedItems;
private ArrayList<Object> adItems() {
ArrayList<Object> adItems = new ArrayList<>();
adItems.add("image");
adItems.add("image");
adItems.add("image");
return adItems;
}
第一个列表代表我的 feedItems,它们取自我的网络模型。第二个列表只是静态图像的列表。我正在尝试设置原生广告,但我退后一步,只是向我的提要提供图像,以证明覆盖我的 RecyclerAdapter 以产生多个视图是有效的。
feedRecyclerAdapter = new FeedRecyclerAdapter(this, feedItems, new ImageLoader(new FeedItemFileCache(this)), adItems());
在这里,我将 FeedRecyclerAdapter 中的 adItems() 对象列表作为最后一个参数传递,并在适配器类本身的构造函数中调用它:
public FeedRecyclerAdapter(Context context, List<Feed> feedItems, ImageLoader feedItemImageLoader, List<Object> adItems) {
this.context = context;
this.feedItems = feedItems;
this.feedItemImageLoader = feedItemImageLoader;
feedItems.addAll(adItems);
}
最后一行feedItems.addAll(adItems); 是我收到以下错误消息的地方:
Error:(43, 18) error: no suitable method found for addAll(List<Object>)
method Collection.addAll(Collection<? extends Feed>) is not applicable
(argument mismatch; List<Object> cannot be converted to Collection<? extends Feed>)
method List.addAll(Collection<? extends Feed>) is not applicable
(argument mismatch; List<Object> cannot be converted to Collection<? extends Feed>)
我的 Feed 对象如下所示:
public class Feed {
public static final String CLASS_NAME = "Feed";
public static final String MARKET_CLASS_NAME = "MarketFeed";
private String objectId;
private String createdAt;
/**
* Can be a ParsePointer but we are using a relational include query to get the whole object
*/
private Design designId;
// Not part of the model, calculated at run time.
private String timestampText;
private boolean isInPersonalGallery;
private boolean isLiked;
private List<Comment> comments;
// Related to Market Feed Items
private DisplayedSide displayedSide = DisplayedSide.FRONT;
public enum DisplayedSide {
FRONT,
BACK
}
public String getObjectId() {
return objectId;
}
public Design getDesign() {
return designId;
}
public Date getCreatedAt() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault());
Date date = null;
try {
date = dateFormat.parse(createdAt);
} catch (ParseException e) {
e.printStackTrace();
Log.d("Feed", "Couldn't parse createdAt date when requested " + createdAt);
}
return date;
}
public String getTimestampText() {
return timestampText;
}
public void setTimestampText(String timestampText) {
this.timestampText = timestampText;
}
public boolean isInPersonalGallery() {
return isInPersonalGallery;
}
public void setInPersonalGallery(boolean inPersonalGallery) {
isInPersonalGallery = inPersonalGallery;
}
public boolean isLiked() {
return isLiked;
}
public void setLiked(boolean liked) {
isLiked = liked;
}
public List<Comment> getComments() {
return comments;
}
public void setComments(List<Comment> comments) {
this.comments = comments;
}
public DisplayedSide getDisplayedSide() {
return displayedSide;
}
public void setDisplayedSide(DisplayedSide displayedSide) {
this.displayedSide = displayedSide;
}
}
总之,我试图在我的 Collection 中的主要对象 feedItems 之间添加一些图像或 adItems。为什么我不能简单地将它们附加到我的主列表中?而我能做些什么呢?
【问题讨论】:
-
A
List<Feed>应该只包含Feed对象。如果你想让它容纳任何东西,它必须是List<Object>。 -
@bluemunch 你的类型不匹配
-
您的错误本身描述了问题:参数不匹配; List
-
我的问题是,如果我将 adItems 设为 Feed 对象列表,它们将具有 Feed 对象的所有属性,这是我不想要的。什么是替代方案?广告对象和 Feed 对象需要在同一个列表中。
-
只要使用
List<Object>,你就可以放任何你想要的东西。
标签: java android listview collections android-recyclerview