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

Android文件管理器开发中ListView显示文件名重复BUG如何解决?

问题修复说明

可以修复,你遇到的重复显示问题由代码逻辑错误导致,具体修复方案如下:

问题根因

  • ListView适配器设置逻辑放在了for循环内部,每遍历一个文件就新建一次适配器并绑定当前未完全填充的listmap,和ListView的条目复用机制共同作用导致出现重复显示的异常。
  • 代码中冗余声明了position变量,和循环变量rep作用完全重复,属于无效代码。

修正后代码

public void loadFiles(String path){
    listmap.clear();
    array.clear();
    FileUtil.listDir(path, array);
    String currentlyPath = path;
    text_currently_path.setText(currentlyPath);
    
    // 仅遍历填充数据,不操作适配器
    for(int rep = 0; rep < array.size(); rep++){
        HashMap<String, Object> item = new HashMap<>();
        item.put("path", array.get(rep));
        listmap.add(item);
    }

    // 数据填充完成后统一处理适配器逻辑
    if(listview_files.getAdapter() == null){
        // 首次加载时初始化适配器
        listview_files.setAdapter(new ListViewAdapter(listmap));
    } else {
        // 非首次加载直接刷新数据即可
        ((ListViewAdapter) listview_files.getAdapter()).notifyDataSetChanged();
    }
}

额外排查建议

如果修改后仍然存在重复问题,可依次排查两点:

  1. FileUtil.listDir()方法是否存在逻辑漏洞,会往传入的array中插入重复路径
  2. loadFiles()方法是否被重复回调触发,导致同一份数据被多次添加到列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:09:04