onItemSelected 未在 Spinner 中调用
onItemSelected is not invoked in Spinner
我试图在我的应用程序中实现 Spinner。一切都正确显示,微调器也成功填充了项目。
我的问题:
当我 select 一个项目时,没有任何反应。
这是我在 onCreate 中的代码:
Spinner spinner;
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, eventTitles);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("Spinner",adapterView.getItemAtPosition(i).toString());
Toast.makeText(AdminActivity.this, "Hello Toast", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
Log.d("Spinner","Nothing selected!");
}
});
有什么建议吗?
谢谢!
亚历克斯
您已经再次在适配器中为微调器定义了布局,这不是必需的,请使用 OnItemSelectedListener 而不是 AdapterView.OnItemSelectedListener。
试试这个,
Spinner spinner;
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, eventTitles);
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("Spinner",adapterView.getItemAtPosition(i).toString());
Toast.makeText(AdminActivity.this, "Hello Toast", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
Log.d("Spinner","Nothing selected!");
}
});
如文档中所述,Spinner
不支持项目点击事件。要对用户点击做出反应,请改为调用 ArrayAdapter
对象的 setOnItemClickListener
。
我在 AsyncTask 中搞砸了。现在可以了!无论如何,谢谢大家的回答。
我试图在我的应用程序中实现 Spinner。一切都正确显示,微调器也成功填充了项目。
我的问题: 当我 select 一个项目时,没有任何反应。
这是我在 onCreate 中的代码:
Spinner spinner;
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, eventTitles);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("Spinner",adapterView.getItemAtPosition(i).toString());
Toast.makeText(AdminActivity.this, "Hello Toast", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
Log.d("Spinner","Nothing selected!");
}
});
有什么建议吗?
谢谢! 亚历克斯
您已经再次在适配器中为微调器定义了布局,这不是必需的,请使用 OnItemSelectedListener 而不是 AdapterView.OnItemSelectedListener。
试试这个,
Spinner spinner;
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, eventTitles);
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("Spinner",adapterView.getItemAtPosition(i).toString());
Toast.makeText(AdminActivity.this, "Hello Toast", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
Log.d("Spinner","Nothing selected!");
}
});
如文档中所述,Spinner
不支持项目点击事件。要对用户点击做出反应,请改为调用 ArrayAdapter
对象的 setOnItemClickListener
。
我在 AsyncTask 中搞砸了。现在可以了!无论如何,谢谢大家的回答。