首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在具有多个edittext的recyclerview中验证和设置错误?

在具有多个EditText的RecyclerView中验证和设置错误,可以按照以下步骤进行:

  1. 在RecyclerView的Adapter中,为每个EditText设置TextWatcher监听器。可以在ViewHolder的构造函数中为EditText设置监听器,或者在ViewHolder的bind方法中设置监听器。
  2. 在TextWatcher的onTextChanged方法中,获取当前EditText的文本内容,并进行验证。可以使用正则表达式、条件判断等方式进行验证。
  3. 如果验证失败,可以通过setError方法设置错误提示信息,并将错误状态保存到数据集中的相应位置。可以在数据集中为每个数据项添加一个布尔值字段,表示该项是否验证通过。
  4. 在RecyclerView的Adapter中,根据数据集中的错误状态,为每个EditText设置错误提示信息。可以在ViewHolder的bind方法中根据错误状态设置setError方法。
  5. 如果需要在用户输入时实时验证,可以在TextWatcher的afterTextChanged方法中进行验证,并更新数据集中的错误状态。

以下是一个示例代码:

代码语言:txt
复制
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> data;
    private List<Boolean> errorStatus;

    public MyAdapter(List<String> data) {
        this.data = data;
        errorStatus = new ArrayList<>(Collections.nCopies(data.size(), false));
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.bind(position);
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private EditText editText;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            editText = itemView.findViewById(R.id.editText);

            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    validateInput(getAdapterPosition(), s.toString());
                }

                @Override
                public void afterTextChanged(Editable s) {
                }
            });
        }

        public void bind(int position) {
            editText.setText(data.get(position));
            if (errorStatus.get(position)) {
                editText.setError("输入错误");
            } else {
                editText.setError(null);
            }
        }
    }

    private void validateInput(int position, String input) {
        // 进行验证,例如使用正则表达式
        boolean isValid = input.matches("[0-9]+");

        // 更新错误状态
        errorStatus.set(position, !isValid);
    }
}

在上述示例中,我们为RecyclerView的每个EditText设置了TextWatcher监听器,在用户输入时进行验证。验证失败时,通过setError方法设置错误提示信息,并将错误状态保存到errorStatus列表中。在ViewHolder的bind方法中根据错误状态设置setError方法,实现了在具有多个EditText的RecyclerView中验证和设置错误的功能。

请注意,以上示例中的代码仅为演示目的,实际使用时可能需要根据具体需求进行适当修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

EditTextRecyclerView解决方案

有时候,一个列表Item会有EditText出现,而由于View复用机制,如果不好好处理EditText,将会出现一些问题。...其实有些问题出现,还是由于没有理解RecyclerView复用机制EditText,主要原因还是菜,哈哈。...菜是原罪 EditTextRecyclerView问题 例子是这样,每个Item包含一个title、一张图片以及一个评分,这个评分就是通过输入框来输入。...那下面先来进行数据绑定。 问题2——错误绑定机制 要想在EditText输入后绑定数据,怎么搞?...解决方案 经过思考,由于RecyclerView复用机制,导致了以下关系存在: 一个ViewHolder——>一个EditText——>多个TextWatcher——>多个PicItem 这里我们可以将多个

2.7K20

当你刷新RecyclerView程序崩掉时候

图片截自StackOverFlow 通过蹩脚翻译,得到如下信息: 这个错误原因是xml布局文件中将android:animateLayoutChanges 设置为true 并且java...item获取焦点控件使之无法销毁 ?...图片截自StackOverFlow 从回答,我们可以看到,在多个Item包含EditText时候,因为其中一个EditText抢占了RecyclerView焦点,导致无法被回收,所以报错。...onRefresh操作代码 从上述代码可以看到,我先清空了已有的数据,然后再获取网络接口数据,而从清空数据到获取到数据这段时间里,List数据是不存在,所以给了RecyclerView要回收...其解决方法是:将列表清空方法放到获取到接口数据以后执行。 以上就是本文所有内容,对于上述解决方法理解存在“主观臆断”倾向,因此本文仅供参考,若有错误地方,欢迎大家在文章下方评论指正!

2.3K20
  • 安卓常用控件

    android:textSize: 设置文本大小。 android:textColor: 设置文本颜色。 android:gravity: 设置文本对齐方式(居中、左对齐、右对齐等)。...EditText EditText 是一个可编辑文本控件,用于接收用户输入。它通常用于表单、搜索框等需要用户输入文本地方。 属性 android:hint: 设置提示文本,在用户输入前显示。...它支持加载显示各种格式图片资源。 属性 android:src: 设置显示图片资源。 android:scaleType: 设置图片缩放类型(适应、裁剪、填充等)。...RecyclerView RecyclerView 是一个更灵活高效列表控件,可以替代 ListView。它支持布局管理器视图持有者(ViewHolder)模式。...设置布局管理器: 选择适当布局管理器( LinearLayoutManager 或 GridLayoutManager)。 设置适配器: 将适配器设置RecyclerView 上。

    14310

    Android 仿微信自定义数字键盘实现代码

    实现这个自定义键盘思路很简单: 要写出一个数字键盘布局; 与 Edittext 结合使用,对每个按键点击事件进行处理; 禁用系统软键盘。 有了思路,实现起来就不难了。 1....实现键盘 xml 布局 网格样式布局用 GridView 或者 RecyclerView 都可以实现,其实用 GridView 更方便一些,不过我为了多熟悉 RecyclerView 用法,这里选择用了...在代码实现键盘布局,填充数据、增加点击事件 我们新建类 KeyboardView 继承自 RelativeLayout,关联上面的布局文件,然后做一些初始化操作:对 RecyclerView 填充数据...、设置适配器,设置出现消失动画效果,写一些会用到方法等。...到这里为止,自定义数字键盘基本就算写好了,不过最重要还是要和 Edittext 结合使用。 3. 与 Edittext 结合使用 1.

    1.7K51

    《Kotin 极简教程》第13章 使用 Kotlin Anko Android 开发

    Realm 简单易用,model 设计在代码,更加易于维护,同时其性能也不错。在Android开发,它可以替代 SQLite ORM 框架。...相比SQLite,Realm更快并且具有很多现代数据库特性,比如支持JSON,流式api,数据变更通知,以及加密支持。...RecyclerView用于在有限窗口展现大量数据,相比ListView、GridView,RecyclerView标准化了ViewHolder,而且更加灵活,可以轻松实现ListView实现不了样式功能...在开发过程,我们通常要写大量findViewById点击事件,像初始view、设置view监听这样简单而重复操作会显得比较繁琐。...在 verticalLayout 代码段内部,创建了三个Android控件 - 两个 editText 视图一个 button 视图。这里视图属性都在一行里面设置好了。

    3.5K30

    【整理篇】Android 开发小技巧

    /storage/emulated/0/… 手机内部存储路径 mEditText.setKeyListener(null); EditText设置不可编辑,比focusable、enable更粗暴 android...” EditText修改软键盘回车键 android:contentDescription="@null" ImageView去除缺少描述警告 tools:text=“预览” 使用tools属性工具预览布局...() 验证用户输入 Context.getCacheDir() 获取缓存数据文件夹路径 DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化本地化时间或者日期...() 强制让 Activity 重建 SparseArray Map高效优化版本 isShown() 判断view是否显示 performClick() 模拟点击 TextWatcher 监听EditText...android:weightSum=“3” 设置LinearLayout权重总数 android:fillViewport=“true” ScrollView设置全屏 SystemClock.sleep

    65020

    偷懒新姿势,打造属于RecyclerView万能适配器AdapterViewHolder

    前言 昨天开始接触江湖口碑很好RecyclerView,事实上,我已经被她强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦,灵活优雅。...其实,RecyclerView在使用上已经是相当简单了(个人觉得),但仍有很多代码是可以加以封装。...因此我们发现,这个adapter核心代码在与onBindViewHolder(),作用是将数据跟视图(ViewHolder)绑定,可以给子类提供一个bindData()抽象方法。...添加点击事件监听也可以封装到万能adapter,子类就不用再写item点击事件处理代码了 封装后Adapter public abstract class BaseRecyclerAdapter<...RecyclerView强制我们使用ViewHolder模式,然而缺不可避免地要写findViewById代码,有没有办法不写这样代码呢?甚至连ViewHolder都不写呢?当然可以!

    1.4K60

    真·富文本编辑器演进之路-【译】破解Span性能之谜

    TextView, EditText, 布局类(Layout, StaticLayout , DynamicLayout)TextLine(Layout中使用一个私有类),它取决于下面几个参数: 文本类型...Layout以及它两个子类StaticLayoutDynamicLayout,检查设置在文本上Span来计算行高布局边距。...因此现在,TextView保存CharSequence副本具有可变标记不可变文本。 为了更新Span,我们首先要得到文本为Spannable,然后根据需要更新Span。...Text changes (reusing TextView) 比方说,我们想重用一个TextView并多次设置文本,就像在RecyclerView.ViewHolder中一样。...这意味着当文本被绘制时,它将具有框架默认Bullet半径,而不是设置Bullet半径。

    1.4K10

    论 Android Span 正确打开方式

    最后,我们将了解如何在进程或跨进程传递 span,以及基于这些,你在创建自定义 span 时需要警惕哪些陷阱。...TextLine 类表示一行具有样式文字,并且它只接受 CharacterStyle, MetricAffectingSpan ReplacementSpan子类。...这意味着如果文字被绘制,它将具有框架默认文字半径,而不是在 CustomBulletSpan 设置半径。...如果想要样式可以通过框架自带 span 实现, 尽可能使用多个框架 span取代你自己 span。否则,尽量在自定义 span 时实现一些基础接口或抽象类。...下次你需要给文字设置样式时,根据你将来需要怎样使用这些文字来决定是使用多个框架 span,还是实现自定义 span。

    1.6K50

    动态设置布局之LayoutInflater

    今天在做一个需求写布局时候在加藤同学建议下使用RecyclerView来实现,在编码过程接触到LayoutInflater这玩意,也算是第一次接触吧,整理下相关知识点。...而 findViewById()是找具体某一个xml下具体 widget控件(:Button,TextView等)。...editText = (EditText)findViewById(R.id.content);// error EditText editText = (EditText)view.findViewById...布局根Viewandroid:layout_xxx属性会被解析成LayoutParams并设置在View上,此时root只用于设置布局根View大小位置。...参考资料 知识点:动态设置布局LayoutInflater 官方文档 理解AndroidLayoutInflater 分享计划 博客内容将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com

    1.1K10

    SQLite实时增删改查

    , new String[]{oldName});//更新一条数据 实例展示: 先看一下我实例运行效果吧,实现了增删改查并且实时刷新功能,以及item 点击事件 item点击时,弹出所选中姓名年龄...: 查询一条语句,并且显示出来: 如果所查询语句不存在,则在显示搜索结果地方显示未搜索到结果 增加一条数据删除一条数据以及更新一条语句都可以进行实时更新,不需要手动刷新 实例源码: 只给效果图不给源码不是好博主...} db.close(); } return personBean; } /** * 查询数据库所有数据...; private TextView mDelete; private TextView mUpdate; private EditText mSearchResultEt;...Recyclerview,所以还需要自定义适配器adapter public class MySQLRecyclerViewAdapter extends RecyclerView.Adapter<

    1.2K30

    DataBinding用法

    DataBinding出现让布局文件承担了部分原本属于页面的工作,也使页面布局文件之间耦合度进一步降低。DataBinding具有以下优势:   *项目更简洁,可读性更高。...在一级页面设置好布局变量book后,便可以直接接收来自页面的数据了,然后UI控件进行绑定;不仅如此,布局变量book同时也是命名空间xmlns:app一个属性。...而对于其他一些能与用户产生交互控件,例如EditText,它不仅可以像TextView一样,随着字段变化自动更新控件内容,还可以实现当用户修改EditText控件内容时,对应字段也能自动更新...假设要实现一个登录界面,我们需要一个用于输入用户名EditText控件,一个用于保存用户登录信息Model类LoginModel,我们希望将EditTextLoginModelusername...后面的设局布局变量完成双向绑定之前方法一样,就不贴代码了。 七.RecyclerView绑定机制   第一步,编写RecyclerView布局文件: <?

    22220

    recycleview优化_recyclerview原理

    它仅仅把需要从ViewGroup移除子view设置父view为null,从而实现了从RecyclerView移除操作detachView()。...下面说说RecyclerView一些优化方案使用技巧: 1、recyclerView.setHasFixedSize(true); 当Item高度如是固定设置这个属性为true可以提高性能,尤其是当...具体实现方式是:在 RecyclerView 开始一个滚动时new Runnable对象,根据 layout manager 滚动方向预取即将进入视野条目,可以同时取出一个或多个条目,例如在使用...7.2 复用RecycledViewPool 在TabLayout+ViewPager+RecyclerView场景,当多个RecyclerView有相同item布局结构时,多个RecyclerView...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.1K21

    「docker实战篇」pythondocker爬虫技术-appium+python实战(18)

    上次通过appium进行了,录制脚本功能,而且还可以进行转换成python,java,js等等语言,这次实战下,从登陆,到进入某个页面操作获取信息。...流程代码 1.点击跳过导航页面,进入登录页面 2.输入用户名密码,点击登录 3.进入页面点击同意,点击研迅 4.模拟手势,上移 准备工作 安装【考研帮】 ?...2.设置-应用-点击【考研帮】-清除数据 ? 启动【考研帮】 ? 启动直接adbuiautomatorviewer.bat 记得看看下载源码包里面的增强版 ?...5.看到uiautomatorviewer 夜神模拟器 ? 6.appium启动 ? 编写代码 #!...2.python在运行过程如果进行uiautomatorviewer加载会报错 3.python在使用过程需要先引入 from appium import webdriver from selenium.webdriver.support.ui

    60110

    Android开发常用知识点

    .判定策略是设备相关,所以不同设备会有不同显示方向 landscape–横屏显示(宽比高要长) portrait–竖屏显示(高比宽要长) user–用户当前首选方向 behind–该...就是起点终点而已。...控件找一个,设置成 android:focusable="true" android:focusableInTouchMode="true" 软键盘不遮挡 解决Android软键盘在全屏下设置adjustResize...在所要设置activity设置以下属性就行了 activity android:windowSoftInputMode = "stateAlwaysHidden | adjustPan" 属性值介绍...相反,当前窗口内容将自动移动以便当前焦点从不被键盘覆盖用户能总是看到输入内容部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容交互操作。

    2.6K10

    DSL In Action

    伴随着Kotlin发展,有一个神奇框架 anko-layout,一直存在于我们视野却又一直因为各种原因无法用于生产环境。...= with(ankoContext) { editText { hint = "Name" } } 官方Demo,将Activity布局方式从 setContentView...再举一个例子,在BottomSheetDialogFragment,我们拿到Dialog后,需要通过setContView方式来给它设置有个View进去,而我们一般会在XML写好然后Inflater...当然Anko因为避免了反射,提高了大量性能。 DSLXML并不是冲突,DSL用于解决布局细碎动态部分,而XML用于单页布局,复杂布局。...如果你认真看了上面的内容,并且有自己体会,可以在已有的UI构架很快用上Anko Layout来解决一些轻量级UI构建。比如说List一个Item,或者一个小Dialog之类。

    1.1K20
    领券