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

从数据库表向ArrayList添加字符串出现拼接问题,需实现下拉菜单单独显示

问题原因与修复方案

你的代码里,下拉菜单所有字符串拼接显示的核心问题是循环中错误地将整个dropDownTitle列表转为字符串添加到data中,而不是逐个添加列表里的单个元素。

错误代码段分析

这段循环里,String.valueOf(dropDownTitle)会把整个ArrayList转换成类似[元素1, 元素2, 元素3]的字符串,导致所有内容变成一个下拉选项:

for (int y = 0; y < dropDownTitle.size();) {
    data.add(String.valueOf(dropDownTitle));
    y++;
}

修复后的代码

@Query("SELECT name FROM tbl_data WHERE label LIKE :query ")
List<String> getSelectedName(int query);

ArrayList<String> dropDownTitle;

try {
    data = new ArrayList<>();
    // 避免强制类型转换,直接用ArrayList构造方法包装返回的List
    dropDownTitle = new ArrayList<>(dataDao.getSelectedName(Integer.parseInt(titleLabel)));
    tvDisc.setText(titleText);
    // 遍历每个元素,逐个添加到data中
    for (String item : dropDownTitle) {
        data.add(item);
    }
    // 或者更简洁:直接把dropDownTitle的内容赋值给data,无需循环
    // data.addAll(dropDownTitle);
} catch (Exception e) {
    Log.e(TAG, "onViewCreated: " + e);
}

额外优化建议

  • 不需要单独创建dropDownTitle再循环添加,直接用data.addAll(dataDao.getSelectedName(...))一步完成,减少冗余代码
  • 避免强制类型转换(ArrayList<String>),因为DAO返回的List不一定是ArrayList类型,用new ArrayList<>(...)包装更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:22:08