在设置 Spinner 的 Adapter 时,添加一个空的数据项,并在 Spinner 的 setOnItemSelectedListener 方法中进行特判,例如:
List itemList = new ArrayList<>();
itemList.add(""); // 添加一个空的数据项
// 获取数据并添加到 itemList 中
// ...
// 设置 Spinner 的 Adapter
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, itemList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int position, long id) {
String selectedValue = (String) adapterView.getItemAtPosition(position);
// 如果选择的是空的数据项,则不执行后面的操作
if (TextUtils.isEmpty(selectedValue)) {
return;
}
// 后面的操作
// ...
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
// do nothing
}
});
在这个解决方法中,我们在 Spinner 的 Adapter 中添加了一个空的数据项,并在 setOnItemSelectedListener 方法中进行了特判,如果选择的是空的数据项,则不执行后面的操作。这样就可以避免 setOnItemSelectedListener 方法不触发的问题了。