前言

android开发中,你是否对表单校验深恶痛觉.

是否还在写大量的if else来校验参数是否输入?

这个文章可能能给你帮助.

直接见代码:

/**

* Created by Jlanglang on 2017/9/4 0004.

* 简书:http://www.jianshu.com/u/6bac141ea5fe

*/

public class SimpleParams extends HashMap {

private LinkedHashMap checkParams = new LinkedHashMap<>();

public static SimpleParams create() {

return new SimpleParams();

}

public SimpleParams putP(String key, Object value) {

return putP(key, value, "");

}

/**

* @param key key

* @param value value

* @param emptyMessage 当value为null或者""时,提示emptyMessage

* @return SimpleParams

*/

public SimpleParams putP(String key, Object value, String emptyMessage) {

this.put(key, value);

checkParams.put(key, emptyMessage);

return this;

}

/**

* @param key key

* @param value value

* @param canNotValue 如果value和该值一样则不添加

* @param emptyMessage 如果value为空则

* @return

*/

public SimpleParams putP(String key, Object value, Object canNotValue, String emptyMessage) {

if (value == canNotValue) return this;

return putP(key, value, emptyMessage);

}

/**

* @param key key

* @param value value

* @param canNotValue 如果value和该值一样则不添加

* @return

*/

public SimpleParams putP(String key, Object value, Object canNotValue) {

return putP(key, value, canNotValue, "");

}

/**

* 检查params

*

* @param context 上下文

* @return 是否通过校验

*/

public boolean checkMessage(Context context) {

return checkMessage(context, null);

}

/**

* /**

* 检查params

*

* @param context 上下文

* @param checkParamsCallback 自定义当校验参数为null时的处理

* @return 是否通过校验

*/

public boolean checkMessage(Context context, CheckParamsCallback checkParamsCallback) {

Set strings = keySet();

for (String key : strings) {

Object value = this.get(key);

if (value instanceof String && !TextUtils.isEmpty((CharSequence) value)) {

continue;

}

if (value instanceof Integer && (Integer) value != 0) {

continue;

}

if (value instanceof Float && (Float) value != 0) {

continue;

}

if (value instanceof Long && (Long) value != 0) {

continue;

}

if (value instanceof SimpleParams) {

if (!((SimpleParams) value).checkMessage(context, checkParamsCallback)) {

return false;

}

}

String emptyMessage = checkParams.get(key);

//emptyMessage则说明,该参数不校验

if (!TextUtils.isEmpty(emptyMessage)) {

//传入回调,自定义处理

if (checkParamsCallback != null) {

checkParamsCallback.callBack(emptyMessage);

} else {

//默认Toast提示.

Toast.makeText(context, emptyMessage, Toast.LENGTH_SHORT).show();

}

return false;

}

}

return true;

}

public interface CheckParamsCallback {

void callBack(String s);

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐