2013-08-06 65 views
0

我之前已經多次擴展了BaseAdapter和ArrayAdapter類,但是我一直有一個關於BaseAdapter的嘮叨問題:爲什麼沒有從android.widget.adapter接口的一些方法,如getView(常識當然會說你需要這個)導致編譯器錯誤,而其他人,如hasStableIds不會導致任何這樣的錯誤?我知道BaseAdapter從ListAdapter繼承了這些方法,它們從Adapter中繼承它們,但爲什麼只有一對需要實現,而另一些卻不需要? android文檔不包含那些在BaseAdapter文檔中特別指定的調用,那麼如果只有某些需要實現的地方,那麼對於那些需要擴展BaseAdapter的特定調用的地方,哪裏有任何指示?我知道我錯過了一些東西,無論是我對oop原理的理解還是我閱讀文檔的能力。感謝您的見解!爲什麼BaseAdapters的自定義子類只需要從Adapter接口實現一些抽象方法?

注:編譯器錯誤是:

MyAdapter is not abstract and does not override abstract method getItemId(int) in Adapter 

,我已經找到了需要的方法是:的getItem,getCount將,getItemId和getView

秒注意:這些都是適配器所有的抽象方法,和ListAdapter。

回答

1

爲什麼沒有從android.widget.Adapter界面的一些方法,如getView(當然常識的人都會說,你需要這個)原因編譯器錯誤

因爲BaseAdapter是一個抽象類,而getView()是一種抽象方法。

while others,like hasStableIds does not cause any such errors?

因爲BaseAdapter有一個hasStableIds()的實現,子類可以根據需要使用。

的Android文檔不包括特別是在BaseAdapter文檔這些調用

你會發現他們從BaseAdapter文檔Adapter部分繼承的方法。

因此,如果只有某些需要實現的地方,是否需要對那些特定的BaseAdapter擴展調用進行指示?在AdapterListAdapter定義

方法,即BaseAdapter沒有實現,是必需的。在AdapterListAdapter定義

方法,即BaseAdapter確實實現,不是必需的,但如果需要的話仍然可以覆蓋。

+0

謝謝馬克!我現在覺得很傻,因爲我設法忽略了BaseAdapter文檔中的hasStableIds調用(和其他實現)。真正的facepalm時刻。感謝您爲我清理! –

相關問題