private void getFileList(String path) {
// 设置标题
// 将当前文件夹路径设置为默认文件夹路径
currentFolderPath = path;
// 获取sd卡下所有文件的文件名
String[] fileNames = fileUtil.getFileNames(currentFolderPath);
fileList = new ArrayList<HashMap<String, Object>>();
// 在所有文件的前面添加一个..文件夹,用于浏览上一个文件夹
HashMap<String, Object> lastFolder = new HashMap<String, Object>();
lastFolder.put("FileImage", R.drawable.file_folder);
lastFolder.put("FileName", "返回上一级目录");
fileList.add(lastFolder);
// 1.先判断是否是文件夹(根据文件路径判断)isDirectory()
// 2.判断是否是图片文件(根据文件后缀判断)isImageFile()
for (String fileName : fileNames) {
HashMap<String, Object> hashMap = new HashMap<String, Object>();
File file = new File(currentFolderPath + "/" + fileName);
// 是文件夹
if (file.isDirectory()) {
hashMap.put("FileName", fileName);
hashMap.put("FileImage", R.drawable.file_folder);
}
// 不是文件夹
else {
// 是文本/lrc文件
if (fileUtil.isTxtFile(fileName)) {
hashMap.put("FileName", fileName);
hashMap.put("FileImage", fileUtil.isWhichImage(fileName));
}
// 不是此类文件
else {
hashMap.put("FileName", fileName);
hashMap.put("FileImage", R.drawable.file_unknown);
}
}
fileList.add(hashMap);//把数据放到list
}
simpleAdapter = new SimpleAdapter(//生成适配器
FileManagerActivity.this, fileList, R.layout.listview_file,
new String[] { "FileImage", "FileName" }, new int[] {
R.id.fileimage, R.id.filename });
simpleAdapter.notifyDataSetChanged();//删除一行操作后行提示ListView进行更新 这样更新或耗费一下资源 listView = (ListView) findViewById(R.id.listviewfm);
// 设置listView的适配器
listView.setAdapter(simpleAdapter);
}
另一种更新:删除一行的时候把那一行的position记录下来,然后list.remove(position);然后
filelist.remove(position);//选择行的位置
simpleAdapter.notifyDataSetChanged();
listView.invalidate();
这样应该效率高一些,但是对于只有10来行的ListView效率看不出来许多