2013-02-19 104 views
2

所以我发现了一些我正在努力工作的代码。我是Android/Exclipse/Java的新手,仍然试图围绕整个事情。但是,我主演自己失明。如何从ArrayAdapter继承?

说我有这样的:

private class RSSListAdapter extends ArrayAdapter<MyRSSItem> { 
    private List<MyRSSItem> objects = null;   
    public RSSListAdapter(Context context, int viewid, List<MyRSSItem> objects) { 
    super(context, viewid, objects);      
    this.objects = objects;    
    } 
} 

,然后在其他地方这样的:

myRssAdapter = new RSSListAdapter(thisActivityContext, newsListView, myItemsDataArrayList); 

其中myItemsDataArrayList声明如下:

ArrayList<MyRSSItem> myItemsDataArrayList = new ArrayList<MyRSSItem>(); 

我得到这个错误:

The constructor News.RSSListAdaptor(Context, ListView, ArrayList) is undefined

当然我尝试过谷歌,但是,好吧,没有运气。

回答

5

构造函数的定义是这样的:

public RSSListAdapter(Context context, int viewid, List<MyRSSItem> objects) { 

这意味着它接受只有一个Context,一个intList <MyRSSItem>

但是,你叫这些参数的构造函数:

new RSSListAdapter(thisActivityContext, newsListView, myItemsDataArrayList); 

the second argument is a newsListView,这不是int,它是一个ListView。它们不是同一类型,因此编译时错误。

如果您更改为android.R.id.text1,它应该可以正常工作,因为这是一个有效的TextView ID,与superclass constructor需要的一样。

绝对不要忘记在创建后将ListView的适配器设置为您的RSSListAdapter

欲了解更详细的信息,this教程是相当有帮助的。

+2

OMG + Doh! +我确实说我自己是盲目的。我正在研究关于Java构造函数的所有事情,而不是......好吧,让我们不要再为了我而详细地讨论。谢谢! :) – Tom 2013-02-19 02:40:06