美文网首页
Android动态新增一行edittext输入栏

Android动态新增一行edittext输入栏

作者: 西鸟 | 来源:发表于2017-12-07 20:52 被阅读45次

    最近遇到这么一个需求——在一个页面中,点击“新增一行”按钮,动态添加一行输入行。提交的时候,收集所有Edittext中的数据,然后提交。

    如图

    非常简单的一个需求,实现起来却遇到了不少问题。

    拿到这个需求后,第一反应有两种方案:

    一、使用ListView(RecyclerView),每个item中引用多个Edittext来实现(顺便多说一句,话筒按钮是语音录入监听,“肌肉注射”按钮是个下拉框,用spinner实现)。

    二、放一个LinearLayout,通过addView()动态添加一行输入栏;

    输入栏中涉及多个监听,语音录入,Spinner的显示。以及最坑的,Edittext的模糊查询(通过录入的数据为参数,获取一个列表,以下拉框的形式显示出来)。

    如果使用addView()的方式做,感觉有点复杂,优先使用ListView来展示。但是一步一步的实现过程中,遇到了很多问题。比如,在adapter中给edittext添加textwatcher,总是会出现执行多次的问题;又比如,新增一行之后刷新listview,会造成其他ITEM中录入过的edittext数据清空……

    如果你也遇到类似问题,并为此苦恼,sorry,我尝试了各种方式,到最后也没想到解决的方法。

    不过找到了另一种方式来实现这个需求——使用fragment。

    主页面出放一个LinearLayout作为容器,将输入栏单独写成一个fragment,将fragment存放到一个集合中,新增则new一个新的fragment存放进去。需要获取所有输入的数据时,遍历集合调用fragment中取数据的公开方法即可。

    相关文章

      网友评论

          本文标题:Android动态新增一行edittext输入栏

          本文链接:https://www.haomeiwen.com/subject/jbecixtx.html