Spinner: getItemAtPosition(position) 返回始终为 null/empty



我想在从我实现的微调器的下拉列表中选择时textView显示选定的项目AdapterView.OnItemSelectedListener但是当我选择项目时,它总是null/empty这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(new CustomAdapter(MainActivity.this, Languages));
btn.setOnClickListener(this);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, 
View view, int position, long id) {
item = (String)parent.getItemAtPosition(position);
Toast.makeText(MainActivity.this, item.toString(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}

SO 答案来源:https://stackoverflow.com/a/49301966/5461982

我知道这是一个较老的问题,但如果其他人遇到它,请务必检查您为 Spinner 设置的适配器的自定义实现是否覆盖了getItem方法:

@Override
public Object getItem(int position) {
return spinnerItems.get(position);
}

默认情况下,在实现自定义BaseAdapter时需要重写此方法,但默认返回类型为null。请务必将返回类型修改为return spinnerItems.get(position)

希望这有帮助,我最初花了大约 30 分钟试图解决这个问题!

试试这个,

String selected_item = spinner.getSelectedItem().toString();

只需从字符串数组中检索值:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
final String item = Languages[position];
Toast.makeText(MainActivity.this, item, Toast.LENGTH_SHORT).show();
}

试试这个

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
sSelectedItem = arr_spiner.get(spinner.getSelectedItemPosition())
.getName();
txtSpinnerValue.setText(sSelectedItem);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
https://stackoverflow.com/questions/45159011/spinner-item-is-not-visible-data-is-coming-from-server-android/45161202#45161202

试试这个

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(new CustomAdapter(MainActivity.this, Languages));
btn.setOnClickListener(this);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, 
View view, int position, long id) {
//item = (String)parent.getItemAtPosition(position);
item = (String) spinner.getSelectedItem().toString(); //Here is the Change
Toast.makeText(MainActivity.this, item.toString(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}

这里的变化是

item = (String)parent.getItemAtPosition(position);

item = (String) spinner.getSelectedItem().toString();

最新更新