如何获取多次通过LayoutInflater加载的布局中所有EditText的文本值?
嘿,这个场景我太熟悉了!每次点击按钮新增一组EditText,要收集所有文本的核心就是把每一个生成的EditText都存进一个全局集合里,这样后续想拿的时候直接遍历就行~下面给你一步步拆解实现:
具体实现步骤
1. 先定义全局集合存EditText引用
在你的Activity类里,声明一个全局的集合(推荐用List<List<EditText>>,因为每次是6个一组,分组存储更清晰):
// 在Activity类的成员变量区域定义 private List<List<EditText>> allEditTextGroups = new ArrayList<>();
2. 加载布局时同步保存EditText
当你点击按钮加载布局后,找到当前组的6个EditText,把它们打包成一个List再加入全局集合。假设你加载的布局文件是edittext_group_layout.xml,里面的EditText id分别是et_1到et_6:
// 按钮点击事件逻辑 yourAddButton.setOnClickListener(v -> { // 用LayoutInflater加载布局 View groupView = LayoutInflater.from(this).inflate(R.layout.edittext_group_layout, yourParentContainer, false); // 找到当前组的6个EditText EditText et1 = groupView.findViewById(R.id.et_1); EditText et2 = groupView.findViewById(R.id.et_2); EditText et3 = groupView.findViewById(R.id.et_3); EditText et4 = groupView.findViewById(R.id.et_4); EditText et5 = groupView.findViewById(R.id.et_5); EditText et6 = groupView.findViewById(R.id.et_6); // 把当前组的EditText存入List,再添加到全局集合 List<EditText> currentGroup = Arrays.asList(et1, et2, et3, et4, et5, et6); allEditTextGroups.add(currentGroup); // 别忘了把加载好的布局添加到父容器显示 yourParentContainer.addView(groupView); });
3. 遍历集合收集所有文本
当你需要获取所有EditText的文本时(比如点击提交按钮),直接遍历全局集合就行:
// 提交按钮的点击事件 yourSubmitButton.setOnClickListener(v -> { List<String> allEditTextTexts = new ArrayList<>(); // 遍历每一组EditText for (List<EditText> group : allEditTextGroups) { for (EditText editText : group) { // 获取文本并去除首尾空格 String text = editText.getText().toString().trim(); allEditTextTexts.add(text); // 也可以在这里直接做处理,比如打印日志、存入数据库 Log.d("EditTextContent", "当前文本:" + text); } } // 现在allEditTextTexts里就存了所有EditText的内容啦,按需使用即可 });
额外小技巧
如果你的EditText id是按规律命名的(比如et_1到et_6),可以用循环简化findViewById的代码,避免重复书写:
List<EditText> currentGroup = new ArrayList<>(); for (int i = 1; i <= 6; i++) { // 根据字符串动态获取id int etId = getResources().getIdentifier("et_" + i, "id", getPackageName()); EditText et = groupView.findViewById(etId); currentGroup.add(et); }
另外,如果有删除某一组EditText的需求,记得同时从allEditTextGroups里移除对应的组,避免内存泄漏或者获取到已被移除的控件。
内容的提问来源于stack exchange,提问作者Angi Rassino
相关产品推荐
相关产品推荐

