如what-is-a-raw-type-and-why-shouldnt-we-use-it中所述,使用原始类是邪恶的。
现在,Spinner .getSelectedItem()
返回一个可以的对象
如果使用初始化,则返回正确的类
Spinner<CorrectClass>
。
为什么会这样?
答案 0 :(得分:2)
getSelectedItem()
是AdapterView
返回Adapter#getItem()
的方法。
所以问题是&#34;为什么接口适配器不是通用的?&#34; 。
答案很简单,因为Android小部件AdapterView可用于存储不同类型的对象。适配器的目的是提供这些对象的一致视图。
如果您将通用参数添加到接口Adapter
(以及AdapterView
和Spinner
),那么您正在修复与整个适配器的事情。
这个想法是适配器视图不需要知道适配器背后的底层数据,因此它不应该限制其数据类型。
然而,您可以在自己的Adapter
实现中使用特定类型(或通用段)专门化SpinnerAdapter
接口,然后通过适配器而不是AdapterView访问数据:
yourAdapter.getItem(spinner.getSelectedItemPosition()).