package wwj.sdfileexplorer; 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.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class SDFileExplorer extends Activity { ListView listView; TextView textView; //记录当前的父文件夹 File currentParent; //记录当前目录路径下的所有文件的文件数组 File[] currentFiles; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取列出全部文件的ListView listView = (ListView)findViewById(R.id.list); textView = (TextView)findViewById(R.id.path); //获取系统的SD卡的目录 File root = new File("/mnt/sdcard/"); //如果SD卡存在 if(root.exists()){ currentParent = root; currentFiles = root.listFiles(); //使用当前目录下的全部文件、文件夹来填充ListView inflateListView(currentFiles); } //为ListView的列表项的单击事件绑定监听器 listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub //用户单击了文件,直接返回,不做任何处理 if(currentFiles[arg2].isFile()) return; //获取用户单击的文件夹下的所有文件 File[] tmp = currentFiles[arg2].listFiles(); if(tmp == null || tmp.length == 0){ Toast.makeText(SDFileExplorer.this, "当前路径不可访问或该路径下没有文件", 20000).show(); } else{ //获取用户单击的列表项对应的文件夹,设为当前的父文件夹 currentParent = currentFiles[arg2]; //保存当前的父文件夹内的全部文件和文件夹 currentFiles = tmp; //再次更新ListView inflateListView(currentFiles); } } }); //获取上一级目录的按钮 Button parent = (Button)findViewById(R.id.parent); parent.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub try{ if(!currentParent.getCanonicalPath().equals("/mnt/sdcard")){ //获取上级目录 currentParent = currentParent.getParentFile(); //列出当前目录下所有文件 currentFiles = currentParent.listFiles(); //再次更新ListView inflateListView(currentFiles); } }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }); } private void inflateListView(File[] files){ //创建一个List集合,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for(int i = 0; i < files.length; i++){ Map<String, Object> listItem = new HashMap<String, Object>(); //如果当前File是文件夹,使用floder图标;否则使用file图标 if(files[i].isDirectory()){ listItem.put("icon", R.drawable.folder); } else{ listItem.put("icon", R.drawable.file); } listItem.put("fileName", files[i].getName()); //添加List项 listItems.add(listItem); } //创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.line, new String[]{"icon","fileName"}, new int[]{R.id.icon, R.id.file_name}); //为ListView设置Adapter listView.setAdapter(simpleAdapter); try{ textView.setText("当前路径为: " + currentParent.getCanonicalPath()); }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
Android的数据存储和IO
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.heiqu.com/6be1e710a7dc13e04a10c1937bd1db00.html