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