android - Spinner setOnItemClickListener 不接受将 OnItemClickListener 实现为参数的命名 class
android - Spinner setOnItemClickListener doesn't accept named class that implement OnItemClickListener as parameter
在我的 android 应用程序中,我有一个 Spinner,我会尝试检测何时选择了一个项目。我知道这可以使用 setOnItemSelectedListener()
方法来完成,但我不明白的是这可以正常工作:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
// implement onItemClick here
});
虽然这会给 Spinner 一个参数是 "not applicable" 的错误:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener());
MyOnItemSelectedListener 是这个,它是我的 MainActivity 中的嵌套 class:
private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener
{
public MyOnItemSelectedListener() {}
// implement onItemClick here
}
我想要实现的不仅仅是有效的代码 - 我已经有了。它是易于阅读的代码(使用我代码中事物的真实名称和我的 MainActivity class 的结构,使用嵌套 class 比使用匿名代码更具可读性)。
我怎么理解java,这两个本质上应该是一样的,只是一个class有名字,另一个没有。
在您的代码中,您使用了 Id
(R.Id.mySpinner
) 而不是 id
(R.id.mySpinner
)。
您的代码中的两种实现都肯定有效。
初始化微调器:
Spinner spinner = new Spinner(getActivity());
spinner.setOnItemSelectedListener(new MySpinner());
内Class:
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
.
在我的 android 应用程序中,我有一个 Spinner,我会尝试检测何时选择了一个项目。我知道这可以使用 setOnItemSelectedListener()
方法来完成,但我不明白的是这可以正常工作:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
// implement onItemClick here
});
虽然这会给 Spinner 一个参数是 "not applicable" 的错误:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener());
MyOnItemSelectedListener 是这个,它是我的 MainActivity 中的嵌套 class:
private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener
{
public MyOnItemSelectedListener() {}
// implement onItemClick here
}
我想要实现的不仅仅是有效的代码 - 我已经有了。它是易于阅读的代码(使用我代码中事物的真实名称和我的 MainActivity class 的结构,使用嵌套 class 比使用匿名代码更具可读性)。
我怎么理解java,这两个本质上应该是一样的,只是一个class有名字,另一个没有。
在您的代码中,您使用了 Id
(R.Id.mySpinner
) 而不是 id
(R.id.mySpinner
)。
您的代码中的两种实现都肯定有效。
初始化微调器:
Spinner spinner = new Spinner(getActivity());
spinner.setOnItemSelectedListener(new MySpinner());
内Class:
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
.