java Android使用“instanceof”是确定“onItemSelected”中微调器返回的项目类型的唯一方法吗?
如标题所示:
有没有办法确定从^{String
,如果是从资源改编的,或者是通用的Object
,如果是通过编程改编的)?在本例中,我指的是在Java中以编程方式填充的,但据我所知,对于从字符串资源数组创建的一个也是一样的
然而,很明显,我们创造了我们的旋转器,我们知道其中的一切是什么类型的。如果它来自资源,可能是字符串。如果以编程方式完成,则可能是某种Object
或View
。但是,onItemSelected
的签名如下所示:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// actions
// to get the item, you would usually do something like:
parent.getItemAtPosition(pos);
}
显然,我们从中得到的类型是?
,换句话说,一个泛型Object
因此,如果我们确切地知道它是什么类型,我们当然可以这样做(用Integer
显示的示例):
Object itemSelected = parent.getItemAtPosition(pos);
if (itemSelected instanceof Integer) doSomeMath((Integer) itemSelected);
但我觉得这并不优雅。当然,至少在我给出的简单情况下是有效的(比如Integer
)。它甚至可能对处理多个不同类型的Spinner
都运行在同一个listener
上很有用——我实际上还没有尝试过
但似乎应该有一种方法可以让签名简单地是这样的:
public void onItemSelected(AdapterView<Integer> parent, View view, int pos, long id)
共 (0) 个答案