app开发第二阶段第七天

作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16251397.html


 

 

今天写输入框的匹配模式,以及匹配模式配置对象

复制代码
package com.linlang.grasharepro.utils.validation;

import android.content.Context;

/**
 * 匹配模式配置对象
 *
 */
class PatternMeta<T> {

    final T pattern;
    final int messageId;

    String message;

    PatternMeta(T pattern, String message, int messageId) {
        this.pattern = pattern;
        this.message = message;
        this.messageId = messageId;
    }

    final void convertMessage(Context context){
        if (messageId > 0){
            message = context.getString(messageId);
        }
    }

}
复制代码

 

复制代码
package com.linlang.grasharepro.utils.validation;

import android.content.Context;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 输入框的匹配模式
 *
 */
abstract class PatternInvoker<Patt, Meta> {

    protected final List<Patt> patterns = new ArrayList<>();
    protected final Context context;

    public final TextView input;
    public final int viewId;

    protected PatternInvoker(Context context, int viewId, TextView input) {
        this.context = context;
        this.input = input;
        this.viewId = viewId;
    }

    /**
     * 添加匹配模式列表
     * @param patterns 匹配模式列表
     */
    public final void addPatterns(Meta[] patterns){
        for (Meta item : Arrays.asList(patterns)){
            final Patt pattern = convert(item);
            if (!onFilter(pattern, item)){
                this.patterns.add(pattern);
            }
        }
    }

    public final String dump(){
        StringBuilder buf = new StringBuilder(input.toString());
        buf.append('@').append(input.getHint()).append(':').append(input.getText());
        buf.append("\n -> patterns:\n");
        for (Patt pattern : patterns){
            buf.append("\t").append(pattern.toString()).append(" ,\n");
        }
        return buf.toString();
    }

    /**
     * 校验输入
     * @return 校验结果
     */
    public abstract Result performTest();

    /**
     * 配置项过滤
     * @param pattern 转换后的储存项
     * @param item 配置项目
     * @return 如果配置项手动排序,则返回True。否则返回False。
     */
    protected abstract boolean onFilter(Patt pattern, Meta item);

    /**
     * 将配置项 Meta 转换成储存项 P
     */
    protected abstract Patt convert(Meta item);
}
复制代码

 

 

明天接着写关于数据处理相关的文件

 

posted @   kuaiquxie  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示