如何从ArrayAdapter继承?

时间:2013-02-19 01:45:14

标签: android android-arrayadapter

所以我发现了一些我正在努力工作的代码。我是Android / Exclipse / Java的新手,仍然试图将整个事情包裹起来。但是,我主宰自己。

说我有这个:

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>();

我收到此错误:

  

构造函数News.RSSListAdaptor(Context,ListView,ArrayList)未定义

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

1 个答案:

答案 0 :(得分:5)

构造函数的定义是:

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

这意味着它只接受ContextintList <MyRSSItem>

但是,使用以下参数调用构造函数:

new RSSListAdapter(thisActivityContext, newsListView, myItemsDataArrayList);
第二个参数是newsListView,不是int,而是ListView。它们的类型不同,因此编译时错误。

如果您更改为android.R.id.text1,它应该可以使用,因为这是一个有效的TextView ID,就像superclass constructor所要求的那样。

绝对不要忘记在创建ListView时将RSSListAdapter的适配器设置为{{1}}。

有关详细信息,this教程非常有帮助。