【Android】提交时要检查100个EditText是否有内容还要弹不同的Toast?这可能是最优雅的姿势。

在处理大量EditText的填报项目中,为每个字段添加提交检查和不同提示显得繁琐。通过创建一个简单的框架,利用注解@Check在需要校验的View上标记,并在初始化后绑定CheckHelper,实现优雅的检查机制。当调用CheckHelper.check时,框架会遍历并检查所有字段,找到第一个为空的字段即停止,通过回调传递检查结果。
摘要由CSDN通过智能技术生成

负责的一个项目,是个填报类的项目,有很多页面都是数十个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。核心类只有三个,基于本文章要解决的需求,有一个默认实现的检查器,外加一个异常类,一共五个。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值