欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android下的实现对本地指定和筛选文件的目录显示

程序员文章站 2022-07-14 18:53:58
...

条件:

       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>