这是我的解决方案。
使用地图来跟踪微调器及其文本视图(如果您有多个)。
private Map<View, TextView> spinnerSelections = new HashMap<View, TextView>();
使用 OnItemSelectedListener 记录微调器选择的更改。这会在活动加载时触发,因此将跟踪您的默认选择。
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
spinnerSelections.put(parent, (TextView) view);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
在微调器的文本视图上设置错误
@Override
public void onValidationFailed(List<ValidationError> errors) {
for (ValidationError error : errors) {
View view = error.getView();
String message = error.getCollatedErrorMessage(this);
if (view instanceof EditText) {
((EditText) view).setError(message);
}
else if (view instanceof Spinner) {
spinnerSelections.get(view).setError(message);
}
}
}
我将微调器设置为不可聚焦,因此我看不到任何错误消息,但我确实得到了红色感叹号。
希望这会有所帮助。