Android 动态添加输入框,并解决如何获取用户每次输入的最后值

简述功能用户点击一个按钮,就动态创建一个editText,然后用户对输入框进行输入或者修改等操作,最后用户输入的数据传输给后台
我这里应用的是LinearLayout,每创建一个editText直接添加到linearLayout里面
对于数据处理(想拿到用户输入的最后一次数据,无论用户对输入框进行删除或者清空,都对其无影响):
1.直接拿着主控件linearLayout去做处理
2.设置textWatcher监听去实时获取输入框的值,然后在监听里面去做数据处理,个人感觉这个太麻烦了,所以没用,并且本身这个监听的坑就挺多的

  • 正确效果 图1.

  • 错误效果 图2. 图3.

对于错误的展示,这里总结一下原因:

  • 图2.的错误展示是因为用了textWatcher监听,数据没有处理好出现的问题

  • 图3.的错误展示是因为在应用linearLayout的时候,没有直接在主控件里面去做处理,而是在它外面获取的eidtText的输入框的值,所以每次获取只获取到了最后一条数据,前几条的数据,获取不到,所以逻辑还是有问题

  • 图3.数据处理代码如下:

在这里插入图片描述


正确的解决办法:

<LinearLayout
            android:id="@+id/mLinearLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"></LinearLayout>     
  • 动态添加editText
//设置点击事件
 add_img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
           		//动态创建editText
                bt = new EditText(getApplicationContext());
                bt.setWidth(1000);
                //添加
                mLinearLayout.addView(bt);
            }
        });
  • 数据处理,对其主控件进行处理
//遍历linearLayout
 for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
       //获取一个线性布局的view
       EditText math  = (EditText) mLinearLayout.getChildAt(i);
       String dat = math.getText().toString();
       twlist.add(dat);//添加到集合里面
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值