You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发待办类应用:如何将EditText存入数组并提取文本内容至数组?

嘿,针对你开发的这款多EditText待办应用,我给你梳理清楚怎么实现你要的两个功能,代码示例都给你写好了,直接就能用!

一、将所有EditText实例存入数组

这里分两种场景来处理,覆盖你可能遇到的情况:

场景1:布局里已经静态定义了多个EditText

如果你的LinearLayout里已经提前放好了若干EditText,最高效的方式是遍历LinearLayout的子View,筛选出所有EditText实例:

// 获取ScrollView内部的LinearLayout(替换成你自己的布局ID)
LinearLayout linearLayout = findViewById(R.id.todo_container_ll);
// 用List存储更灵活,后续转数组也方便
List<EditText> editTextList = new ArrayList<>();

// 遍历所有子View,筛选EditText
for (int i = 0; i < linearLayout.getChildCount(); i++) {
    View childView = linearLayout.getChildAt(i);
    if (childView instanceof EditText) {
        editTextList.add((EditText) childView);
    }
}

// 如果需要转换成固定长度的数组(根据你的需求选择)
EditText[] editTextArray = editTextList.toArray(new EditText[0]);

场景2:动态添加EditText(待办应用常用场景)

如果用户可以点击按钮新增待办输入框,推荐在创建EditText的时候直接加入数组,避免重复遍历布局,效率更高:

// 初始化EditText列表
List<EditText> editTextList = new ArrayList<>();
LinearLayout linearLayout = findViewById(R.id.todo_container_ll);
Button addTodoBtn = findViewById(R.id.add_todo_btn);

addTodoBtn.setOnClickListener(v -> {
    // 创建新的EditText
    EditText newTodoEt = new EditText(this);
    // 设置布局参数(根据你的UI需求调整)
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
    );
    params.setMargins(16, 16, 16, 16); // 单位是dp,需要转px的话可以写工具类
    newTodoEt.setLayoutParams(params);
    newTodoEt.setHint("输入新的待办内容");
    
    // 直接加入列表
    editTextList.add(newTodoEt);
    // 添加到布局显示
    linearLayout.addView(newTodoEt);
});
二、将各EditText的文本内容存入数组

基于上面的EditText列表,我们可以快速提取所有文本内容,还能按需过滤空内容:

List<String> todoContentList = new ArrayList<>();
for (EditText et : editTextList) {
    String content = et.getText().toString().trim();
    // 可选:过滤掉空的待办内容
    if (!content.isEmpty()) {
        todoContentList.add(content);
    }
}

// 转换成字符串数组(按需选择)
String[] todoContentArray = todoContentList.toArray(new String[0]);

额外补充:Kotlin版本代码(如果用Kotlin开发的话)

获取EditText列表:

val linearLayout = findViewById<LinearLayout>(R.id.todo_container_ll)
val editTextList = mutableListOf<EditText>()
for (i in 0 until linearLayout.childCount) {
    val child = linearLayout.getChildAt(i)
    if (child is EditText) {
        editTextList.add(child)
    }
}
val editTextArray = editTextList.toTypedArray()

提取文本内容:

val todoContentList = editTextList.mapNotNull { 
    it.text.toString().trim().takeIf { content -> content.isNotEmpty() } 
}
val todoContentArray = todoContentList.toTypedArray()

内容的提问来源于stack exchange,提问作者Ferg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:24