android 生成多个表单,android自定义表单

一、概述

6307737432ae

场景:如上图,注册时,需要获取填入的内容,并且判断是否为空,如果为空则提示。

如果你有耐心,可以一个个获取editText,然后逐个获取值,逐个用if else判断是否为空。

下面就是为解决这一个繁琐的问题提供方案。

二、使用

效果图

6307737432ae

1、引入库 compile 'com.wuwind.form:formlibrary:1.0.0'

2、在你的布局文件最外层嵌套

中间略去...

3、代码

3.1

FormLayout formLayout = (FormLayout) findViewById(R.id.formLayout);

3.2

Map results = formLayout.getResults();//获取表单中的内容

3.3

formLayout.reset();//重置,清空

4.说明

tag 为"null"不是必填字段(默认都是必填字段)

必填字段为空则弹出“请输入xxx”提示,

调用getResult 返回结果map,key为设置的tag,如果tag为空的话 依次从1开始递增。如果有必填字段为空,则返回null。

调用reset 清空表单。

三、实现原理

1.获取所有的editText

private void getEditTexts(ViewGroup vg) { int childCount = vg.getChildCount(); for (int i = 0; i < childCount; i++) { View view = vg.getChildAt(i); if (view instanceof EditText) editTexts.add((EditText) view); else if (view instanceof ViewGroup) { getEditTexts((ViewGroup) view); } } }

2.获取值的时候,遍历初始化所获取的editText,根据tag判读是否为必填字段。

public Map getResults() { key = 0; results.clear(); for (EditText editText : editTexts) { Object tag = editText.getTag(); String r = editText.getText().toString(); if ((tag == null || !tag.equals("null")) && TextUtils.isEmpty(r)) { checkEdit(editText.getHint().toString()); return null; } if (tag == null || tag.equals("null")) { key++; results.put(key + "", r); } else { results.put(tag.toString(), r); } } return results; }

源码地址:https://github.com/wuwind/FormProject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值