条件:
1.我们需要得到一些路径,某个文件目录下的。比如:"/kgmusic/download/' 下的。我打开手机看的是这个路径。
2. 我们是为了筛选出.MP3 文件。然后显示。不希望出现说显示所有的文件
3.确定用怎么样的方式用ListActivity 还是SimpleAdapter 通过list显示在自己自定的xml文件中
实现第一个条件:
1. 这是有点傻哈, 我是这样的。我们在手机中看到路经不一定android 所对应的路经。怎么看呢。可以通过adb shell 去显示。比如说:"/kgmusic/download/' 。它在Android下的路径其实是"/sdcard/kgmusic/download/"
// 存放着音乐文件的路径
private final String MUSIC_PATH = "/sdcard/kgmusic/download/";
2.我们去实现FilenameFilter这个接口,取到filename结尾是.MP3的文件
// 用来去筛选出对应的.mp3文件
class musicfilter implements FilenameFilter {
/*
* accept方法的两个参数的意义: dir:文件夹对像,也就是你原来调用list方法的File文件夹对像 name:当前判断的文件名,
* 这个文件名就是文件夹下面的文件
* 返回:这个文件名是否符合条件,当为true时,list和listFiles方法会把这个文件加入到返回的数组里,false时则不会加入
*/
public boolean accept(File dir, String filename) {
// TODO Auto-generated method stub
return (filename.endsWith(".mp3"));
}
}
// 将这个文件显示在Listview 下 。我这里用的SimpleAdapter适配器去实现的。这里要两个xml.SetAlarm.this是这个本地Activity
private void ListSongsName() {
//首先是要得到music文件的路径
File file=new File(MUSIC_PATH);
List<Map<String,Object>> list= new ArrayList<Map<String,Object>>();
//将所有的文件加入到一个list文件中
if(file.list(new musicfilter()).length>0){
for (File file1 : file.listFiles(new musicfilter())){
Map<String,Object> map=new HashMap<String, Object>();
map.put("filename",new EFfile(file1).getFile().getName());
list.add(map);
}
}
SimpleAdapter sa= new SimpleAdapter(SetAlarm.this, list,
R.layout.musiclist, new String[]{"filename"}, new int[]{R.id.MusicItem} );
listview.setAdapter(sa);
}
贴下对应的mustlist.xml 文件吧
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/MusicItem" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>