2013-02-19 103 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