android-Spinner setOnItemClickListener不接受实现OnItemClickListener作为参数的命名类
问题描述:
在我的android应用程序中,我有一个微调,并且我尝试检测何时选择了一个项目。我知道这可以使用setOnItemSelectedListener()
方法来完成,但我不明白的是,这工作得很好:android-Spinner setOnItemClickListener不接受实现OnItemClickListener作为参数的命名类
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
// implement onItemClick here
});
虽然这给出了一个错误,该参数为“不适用”微调:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener());
哪里MyOnItemSelectedListener是这样的,这是在我的MainActivity嵌套类:
private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener
{
public MyOnItemSelectedListener() {}
// implement onItemClick here
}
我想实现的是不只是运行的代码 - 我已经有牛逼帽子。它的代码很容易阅读(使用我的代码中的事物的真实名称以及我的MainActivity类的结构,使用嵌套类比匿名类更具可读性)。
我如何理解java,除了一个类有一个名字,另一个没有名字,这两个本质上应该是相同的。
答
在您的代码中,您使用Id
(R.Id.mySpinner
)而不是id
(R.id.mySpinner
)。
在你的代码中的两个实现肯定会工作。
初始化微调:
Spinner spinner = new Spinner(getActivity());
spinner.setOnItemSelectedListener(new MySpinner());
内部类:
private class MySpinner implements AdapterView.OnItemSelectedListener{
public MySpinner(){}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
这实际上是对我工作的罚款。请咨询您的id
和layout
。
谢谢,它的工作。我不知道为什么当我最后一次尝试时,它现在没有。也许我在某个地方有错误的类型。 – sisisisi