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

Java/Android Studio中ArrayList添加自定义类元素报类型不匹配错误

问题根因

报错来自添加新待办事项的代码逻辑错误:
你的taskList是只能存储ToDos类型对象的ArrayList,你在构造ToDos对象时,错误地在构造函数的第一个参数位置嵌套调用了taskList.add(editText.getText().toString())。
ArrayList.add()方法的返回值是boolean类型(用来标识元素是否添加成功),既不是ToDos构造函数需要的String类型待办内容,还会提前往只能存ToDos的列表里塞String类型值,自然会报类型不匹配错误。

修复方案

去掉构造ToDos对象时嵌套的多余taskList.add()调用,先从输入框取到待办文本、拿到开关状态,构造完合法的ToDos对象后,再调用taskList.add()把对象加入列表即可。

  • 原错误代码:
taskList.add(new ToDos(taskList.add(editText.getText().toString()),switch1.isChecked()));
  • 修复后代码:
// 取出输入框的待办内容
String inputContent = editText.getText().toString();
// 拿到紧急状态
boolean urgentStatus = switch1.isChecked();
// 构造ToDos对象后加入列表
taskList.add(new ToDos(inputContent, urgentStatus));
可选优化点

修复完类型报错后,还可以补两个细节避免后续出现功能异常:

  • 增加输入非空校验:点击添加按钮时先判断输入内容是否为空,为空就不执行添加逻辑,避免产生无内容的无效待办
  • 修复列表项背景复用错乱:你的适配器getView方法里只给紧急项设置了红色背景,没有给非紧急项还原默认背景,列表滑动时会因为View复用导致非紧急项也显示红色,补充else分支即可:
textview.setText(getItem(position).text);
if(getItem(position).IsUrgent){
    textview.setBackgroundColor(Color.RED);
} else {
    // 非紧急项还原默认透明背景
    textview.setBackgroundColor(Color.TRANSPARENT);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:27:20