android动态控件添加编辑框,Android动态新增一行edittext输入栏

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

如图

fd8e9989a5a8

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

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

一、使用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中取数据的公开方法即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值