Android: for 循环通过 EditText、CheckBoxed 和 Spinners 到 setErrors
Android: for loop through EditText, CheckBoxed and Spinners to setErrors
这段代码从列表中获取资源,并为注册表单上的每个字段设置错误,其中一个是微调器,所以当错误在微调器上时,由于微调器而失败不是 TextView 的子类。我怎样才能让这段代码以优雅的方式处理微调器?
// set errors
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
//TODO this codes doen't manage spinner errors! (checkboxes and editext are both TextView)
TextView edit = (TextView) getActivity().findViewById(id);
if (!error.getValue().isEmpty()) {
edit.setError(error.getValue().get(0));
}
}
您可以检查当前视图是否是文本视图的实例。如果是,则继续并将其转换为 TextView,并执行您在其上执行的任何操作。否则,以您喜欢的任何方式处理 checkboxes/spinner/whatever。
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
View edit = getActivity().findViewById(id);
if (!error.getValue().isEmpty() && edit instanceof TextView) {
TextView editTextView = (TextView)edit;
editTextView.setError(error.getValue().get(0));
}
}
我就是这样解决的,非常感谢Urban
// set errors
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
View edit = getActivity().findViewById(id);
if (!error.getValue().isEmpty() && edit instanceof TextView) {
TextView mTextView;
mTextView = (TextView)edit;
mTextView.setError(error.getValue().get(0));
} else if (!error.getValue().isEmpty() && edit instanceof Spinner){
Spinner mSpinner;
mSpinner = (Spinner)edit;
((TextView)mSpinner.getChildAt(0)).setError(error.getValue().get(0));
}
}
这段代码从列表中获取资源,并为注册表单上的每个字段设置错误,其中一个是微调器,所以当错误在微调器上时,由于微调器而失败不是 TextView 的子类。我怎样才能让这段代码以优雅的方式处理微调器?
// set errors
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
//TODO this codes doen't manage spinner errors! (checkboxes and editext are both TextView)
TextView edit = (TextView) getActivity().findViewById(id);
if (!error.getValue().isEmpty()) {
edit.setError(error.getValue().get(0));
}
}
您可以检查当前视图是否是文本视图的实例。如果是,则继续并将其转换为 TextView,并执行您在其上执行的任何操作。否则,以您喜欢的任何方式处理 checkboxes/spinner/whatever。
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
View edit = getActivity().findViewById(id);
if (!error.getValue().isEmpty() && edit instanceof TextView) {
TextView editTextView = (TextView)edit;
editTextView.setError(error.getValue().get(0));
}
}
我就是这样解决的,非常感谢Urban
// set errors
for (Map.Entry<String, List<String>> error : errors.entrySet()) {
int id = getActivity().getResources().getIdentifier("edit_" + error.getKey(), "id", getActivity().getPackageName());
View edit = getActivity().findViewById(id);
if (!error.getValue().isEmpty() && edit instanceof TextView) {
TextView mTextView;
mTextView = (TextView)edit;
mTextView.setError(error.getValue().get(0));
} else if (!error.getValue().isEmpty() && edit instanceof Spinner){
Spinner mSpinner;
mSpinner = (Spinner)edit;
((TextView)mSpinner.getChildAt(0)).setError(error.getValue().get(0));
}
}