2015-02-07 87 views
1

对不起,我的noob问题。我有一个名为类型卡类。 ? 如果我使用的扩展名为BookHeader.Why卡我不能在列表中使用它的另一个类,这里​​是我的代码:扩展类不是父类型吗?

package com.peomtime.tosca.peomtime.Databse; 

import android.content.Context; 

import it.gmariotti.cardslib.library.internal.Card; 
import it.gmariotti.cardslib.library.internal.CardHeader; 

/** 
* Created by CrazyVirus on 2015-02-06. 
*/ 
public class PartHeader extends Card { 
    private String Title; 
    private String ID; 
    private String BookID; 
    private Context context; 
    private CardHeader header; 

    public void setBookID(String BookID) 
    { 
     this.BookID = BookID; 
    } 
    public String getBookID(){return this.BookID;} 

    public void setTitle(String Title) 
    { 
     this.Title = Title; 
     header.setTitle(Title); 
     this.addCardHeader(header); 
    } 
    public String getTitle(){return this.Title;} 

    public void setID(String ID) 
    { 
     this.ID = ID; 
    } 
    public String getID(){return this.ID;} 

    public PartHeader(Context c){ 
     super(c); 
     this.context =c; 
     header = new CardHeader(context); 

    } 

    public Card getCard(){ 

     return this; 
    } 
} 

,因为它显示我的类扩展Card.So我如何使用它在这些代码

List<PartHeader> BookPartList = db.getAllBookParts(BookID); 
BookPartAdaptet mBookPartAdapter = new BookPartAdaptet(this, BookPartList); 

这里是BookPartAdaptet

public BookPartAdaptet(Context context, List<Card> cards) { 


    super(context, cards); 
    data=cards; 
    // inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // activity = context.getApplicationContext(); 

} 

我在这行得到错误

BookPartAdaptet mBookPartAdapter = new BookPartAdaptet(this, BookPartList); 

,说BookPartList神秘岛是List<Card>类型不List<PartHeader >

我想是因为扩展类的,我可以用它作为父母的类型?如果我不能怎么办呢? 感谢您help.And对不起我的noob问题:(

+0

具有特定的类型,例如'名单'那么为什么不'名单列表= ..'? – SMA 2015-02-07 07:30:36

+0

@almasshaikh因为我需要一个新的扩展CALSS你为什么要定义列表的任何子类的列表'Card'和BookPartAdaptet需要列表,我有列表,我不能施放它们?或者类似的东西? – 2015-02-07 07:33:50

回答

3

我想你想尝试这样的事:

public BookPartAdaptet(Context context, List<? extends Card> cards) { 
    // ... 
} 
+1

你打败了我。对此的解释是在这里:http://stackoverflow.com/questions/2723397/java-generics-what-is-pecs – Axel 2015-02-07 07:33:40

+0

看来这是我需要的。当我使用List <?扩展Card>它可以让我使用扩展类?那么接下来会发生什么?当另一个类需要Card时,我会面临一个问题,并且我将它们从Card扩展到PartHeader? – 2015-02-07 07:36:14

+0

@Axel我用你的sugested的方式,它固定,但现在我有同样的问题'超(上下文,卡);'我应该然后转换列表列表? – 2015-02-07 07:41:17

1

你应该你BookPartAdaptet的定义更改为follwoing这样你就可以通过卡

public BookPartAdaptet(Context context, List<? extends Card> cards){ 
} 
+0

感谢它的工作,但我在超级(上下文,卡)的错误;我该如何施展我的名单?有什么方法吗? – 2015-02-07 07:50:09

+0

什么是卡类型是超类? – vsr 2015-02-07 07:55:37

+0

它是来自CardAdapter的超类 – 2015-02-07 10:02:39