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

这篇博客讲述了如何在Android应用中动态创建EditText控件并将其添加到LinearLayout中。用户可以通过点击按钮来添加新的输入框。在数据处理方面,强调了直接操作主控件LinearLayout以获取所有输入数据的重要性,而非通过TextWatcher监听。博主指出了使用TextWatcher可能导致的数据处理问题,以及在外部获取EditText值时只获取到最后一条数据的错误。正确的解决方案是遍历LinearLayout以收集所有EditText中的用户输入。

简述功能用户点击一个按钮,就动态创建一个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);//添加到集合里面
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉莫帅

你的鼓励将是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值