扫描本地文件加载到item
不限于应用到音乐播放器,其他Android工程,也可以使用SdcardSearchToList
其他Android工程也可以使用,我现在做了很小的Demo
后续将博文,将在播放器里,加入这一功能,来实现刚下载好的音乐,加载到播放器
这个Demo的源码下载:
http://download.csdn.net/album/detail/3105
名称为:SdcardSearchToList,如果没有显示,可能还没有审核完成
不下载也可以,因为只有1个java文件,2个xml文件,非常小
截止到目前的源码下载:
http://download.csdn.net/album/detail/3105
(最新的,请下载最后一个,本博文对应版本2.1;如果需要逐步实现的过程,请下载所有)
实现效果如图:
实现代码如下:
GetListActivity如下:(主Activity)
package com.iwanghang.sdcardsearchtolist; import android.os.Bundle; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; /** * 不要忘记加权限 * <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> */ public class GetListActivity extends Activity { private Button myBtn = null; private ListView lv = null; private SimpleAdapter sa = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_list); lv = (ListView)findViewById(R.id.listv); String[] from = {"text_content"}; int[] to = {R.id.myView1}; sa = new SimpleAdapter(this, getList(), R.layout.itemlist, from, to); myBtn = (Button)findViewById(R.id.myButton); myBtn.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub lv.setAdapter(sa); } }); } public List<Map<String, Object>> getList() { List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); String sDStateString = Environment.getExternalStorageState(); if(sDStateString.equals(Environment.MEDIA_MOUNTED)) { //File SDFile = Environment.getExternalStorageDirectory(); //File sdPath = new File(SDFile.getAbsolutePath()); File sdPath = new File(Environment.getExternalStorageDirectory() + "/drm_music"); System.out.println("GetListActivity.List.sdPath = " + sdPath ); System.out.println("GetListActivity.List.listFiles = " + sdPath.listFiles() ); if(sdPath.listFiles().length > 0) { for(File file : sdPath.listFiles()) { Map<String, Object> map = new HashMap<String, Object>(); map.put("text_content", file.getName()); list.add(map); System.out.println("name-->"+file.getName()); } } } return list; } //其中,getList()用于扫描本地文件,获得文件的名字;为ListView设置一个适配器,将扫描到的文件显示在ListView上,这里需要注意,适配器的后面两个参数都是数组。 }
activity_get_list.xml如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.iwanghang.sdcardsearchtolist.GetListActivity" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="获取本地文件信息" /> <Button android:id="@+id/myButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="扫描" /> <ListView android:id="@+id/listv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="vertical" /> </LinearLayout>
itemlist.xml如下:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lvitem" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns ="*"> <TableRow> <TextView android:id="@+id/myView1" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <TextView android:id="@+id/myView2" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView> <TextView android:id="@+id/myView3" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </TableRow> </TableLayout>
时间: 2024-08-09 22:03:13