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

1645

被折叠的 条评论
为什么被折叠?



