负责的一个项目,是个填报类的项目,有很多页面都是数十个EditText,或者是单选、多选。很多表格为必填项,提交的时候需要判断是否填写并给出提示。本来不算什么很难的需求,可麻烦就麻烦在一个页面里有大大大大量的EditText的时候,写起来很令人抓狂,于是写了个简单的框架,来辅助完成这项重复的工作。
遇事不决上注解,注解才是Java的浪漫。
public class ContextSimpleActivity extends AppCompatActivity {
@Check(toast = "EditText未输入内容")
private EditText et;
@Check(toast = "TextView为空")
private TextView tv;
private TextView tv_fill;
private TextView tv_check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
et = findViewById(R.id.et);
tv = findViewById(R.id.tv);
tv_fill = findViewById(R.id.tv_fill);
tv_check = findViewById(R.id.tv_check);
CheckHelper.bind(this);
tv_fill.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("EasyCheck");
}
});
tv_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
CheckHelper.check(ContextSimpleActivity.this);
}catch (CheckerException e){
e.printStackTrace();
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
CheckHelper.unbind(this);
}
}
在要校验的View上使用@Check注解,注解值为要显示的Toast(此注解还有另外一个值为检查器的Class对象,后面再详细说)。在初始化View结束后调用CheckHelper.bind方法绑定,在Activity销毁时调用unbind解绑,在需要校验的时候调用CheckHelper.check。核心类只有三个,基于本文章要解决的需求,有一个默认实现的检查器,外加一个异常类,一共五个。