import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
/**
*
*遍历Sd卡目录中所有文件,使用listview显示,
*单击条目时,提示文件路径
*/
public class MainActivity extends ListActivity {
private SimpleAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter=new SimpleAdapter(MainActivity.this, getdata(), android.R.layout.simple_list_item_1, new String[]{"name"}, new int[]{android.R.id.text1});
setListAdapter(adapter);
}
//提供listview数据
private List<HashMap<String, String>> getdata() {
List<HashMap<String, String>> data=new ArrayList<HashMap<String,String>>();
File file=Environment.getExternalStorageDirectory();//获得sdcard根目录
ArrayList<File> files=getFiles(file);//获得根目录下所有文件
//遍历将所有文件加入data中
for(File f:files){
HashMap<String, String> map=new HashMap<String, String>();
map.put("name", f.getName());
data.add(map);
}
return data;
}
//定义全局变量all_files保存所有文件
//定义文件过滤器,添加筛选条件
//定义工具类getFiles()获取传入值file的全部子文件
private ArrayList<File> all_files=new ArrayList<File>();
// private FileFilter filter = new FileFilter() {//文件过滤器,此处目的是筛选出.mp3/.wav/.wma文件
// @Override
// public boolean accept(File file) {
// return file.isDirectory() || file.getName().matches("^.*?\\.(mp3|wav|wma)$");
// }
// };
private ArrayList<File> getFiles(File file) {
//使用递归遍历所有子文件
File[] files=file.listFiles();
// File[] files=file.listFiles(filter);//使用文件过滤器,筛选出满足条件的所有文件
for(File f:files){
if(f.isFile()){
all_files.add(f);
}else if(f.isDirectory()&&f.canRead()){
getFiles(f);
}
}
return all_files;
}
//选择条目,提示文件路径
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String msg=all_files.get(position).getPath();
Toast.makeText(MainActivity.this, msg, 500).show();
}
}