好久没更新博客了,今天写一篇 我最近遇到的问题,以及我是如何解决的的方法。
概要:本软件主要是运用于展讯平台手机的预装录音管理APP,基本大的功能已经写好了,之前在做的是在录音列表里添加长按删除录音文件、文件夹,本以为很简单,可以很快搞定,没想到搞了整整一个星期,真是走了很多弯路,好了不多说,先上“菜”。
public void scanFiles(String path, boolean clear) {
Log.d(TAG, "zhangcl: scanFiles(): path = " + path);
if(clear) {
list.clear();
}
File dir = new File(path);
File[] subFiles = dir.listFiles();
int loopindex = 0;
if(subFiles != null){
for(File f:subFiles){
list.add(f);
}
}
this.notifyDataSetChanged();
currPath = path;
}
CallRecordAdter的getview方法我就不贴出来了,也没什么好看的,这个方法主要是根据传入的路径遍历文件夹,添加到list中,这个方法的2个参数,第一个是要遍历的路径,第二个是判断是否要清空原本的list。
List.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
alertDialogDelete(arg2);
return true;
}
});
我先说下思路吧,思路很简单,"不就是一个长按删除的功能嘛",首先onItemLongClick已经提供了一个arg2,这个arg2其实就是postion,这个postion就是你长按的是listview中具体哪个item的下标,有了这个下标,你就可以拿到用户点击listview的item的值,之后判断是否为文件,如果是文件,通过File[] childFiles = file.listFiles();通过for循环遍历childFiles[i].getName().equals(item的值),如果相等就删除,如果是文件夹,判断文件夹下是否有文件,如果没有,直接删除。如果有文件的话,通过迭代遍历删除。哦 千万不要忘记了,更新媒体数据库。<pre name="code" class="java"> private void