Android - 将多个列表<abstracttype>传递给BaseAdapter </abstracttype>

时间:2014-05-23 07:11:06

标签: java android baseadapter

我有一个抽象类AbstractCard,我想用它作为我的List数据传递给我的BaseAdapter。我不想将List<AbstractCard>传递给BaseAdapter,而是传递一个扩展AbstractCard的List<Object>

例如,我有一个扩展AbstractCard的类卡。在我的BaseAdapter中,我有:

private List<AbstractCard> abstractCards = new ArrayList<AbstractCard>();

public void setData(List<AbstractCard> abstractCards) {
    this.abstractCards = abstractCards;
}

现在,由于Card扩展了AbstractCard,我认为我可以将List<Card>传递给setData(),但它显然给了我错误。我怎么能这样做,所以我需要一个基于其父类的类型?

2 个答案:

答案 0 :(得分:3)

您是否尝试过:

private List<? extends AbstractCard> abstractCards = new ArrayList<AbstractCard>();

public void setData(List<? extends AbstractCard> abstractCards) {
    this.abstractCards = abstractCards;
}

然后:

someClass.setData(new ArrayList<ConcreteCard>());

答案 1 :(得分:0)

您无法实例化List,因为它是一个接口(请参阅List。您必须使用实现List的具体类。例如,使用ArrayList:< / p>

ArrayList<Card> list = new ArrayList<Card>();