package org.crazyit.io;
import java.io.File;
import java.io.IOException;
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;
/**
* Description:
* <br/>site: <a href="http://www.crazyit.org">crazyit.org</a>
* <br/>Copyright (C), 2001-2014, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
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()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// 用户单击了文件,直接返回,不做任何处理
if (currentFiles[position].isFile()) return;
// 获取用户点击的文件夹下的所有文件
File[] tmp = currentFiles[position].listFiles();
if (tmp == null || tmp.length == 0)
{
Toast.makeText(SDFileExplorer.this
, "当前路径不可访问或该路径下没有文件",
Toast.LENGTH_SHORT).show();
}
else
{
// 获取用户单击的列表项对应的文件夹,设为当前的父文件夹
currentParent = currentFiles[position]; //②
// 保存当前的父文件夹内的全部文件和文件夹
currentFiles = tmp;
// 再次更新ListView
inflateListView(currentFiles);
}
}
});
// 获取上一级目录的按钮
Button parent = (Button) findViewById(R.id.parent);
parent.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
try
{
if (!currentParent.getCanonicalPath()
.equals("/mnt/sdcard"))
{
// 获取上一级目录
currentParent = currentParent.getParentFile();
// 列出当前目录下所有文件
currentFiles = currentParent.listFiles();
// 再次更新ListView
inflateListView(currentFiles);
}
}
catch (IOException e)
{
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是文件夹,使用folder图标;否则使用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 (IOException e)
{
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
疯狂Android讲义第二版 光盘源码(第八章) (739个子文件)
resources.ap_ 280KB
resources.ap_ 109KB
resources.ap_ 40KB
resources.ap_ 24KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 23KB
resources.ap_ 22KB
resources.ap_ 22KB
GestureZoom.apk 416KB
org.crazyit.io.GestureZoom.apk 415KB
GestureFlip.apk 246KB
org.crazyit.io.GestureFlip.apk 245KB
SDFileExplorer.apk 177KB
org.crazyit.io.SDFileExplorer.apk 176KB
org.crazyit.db.Dict.apk 160KB
AddGesture.apk 160KB
DBTest.apk 160KB
RecogniseGesture.apk 159KB
SDCardTest.apk 159KB
FileTest.apk 159KB
Speech.apk 159KB
org.crazyit.io.AddGesture.apk 159KB
SharedPreferencesTest.apk 159KB
org.crazyit.db.DBTest.apk 159KB
org.crazyit.io.RecogniseGesture.apk 158KB
org.crazyit.io.SDCardTest.apk 158KB
org.crazyit.io.FileTest.apk 158KB
ReadOtherPreferences.apk 158KB
org.crazyit.io.Speech.apk 158KB
GestureTest.apk 158KB
org.crazyit.io.SharedPreferencesTest.apk 158KB
UseCount.apk 158KB
org.crazyit.other.ReadOtherPreferences.apk 157KB
org.crazyit.io.GestureTest.apk 157KB
org.crazyit.io.UseCount.apk 157KB
Dict.apk 22KB
SharedPreferencesWrite.apk 19KB
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
jarlist.cache 119B
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
SDFileExplorer.class 4KB
SDFileExplorer.class 3KB
SDCardTest.class 3KB
RecogniseGesture$1.class 3KB
SDCardTest.class 3KB
GestureZoom.class 3KB
GestureZoom.class 3KB
RecogniseGesture$1.class 3KB
GestureFlip.class 3KB
GestureFlip.class 3KB
DBTest.class 3KB
DBTest.class 3KB
Dict.class 3KB
Dict.class 3KB
FileTest.class 3KB
FileTest.class 3KB
AddGesture$1.class 2KB
AddGesture$1.class 2KB
Dict$2.class 2KB
Dict$2.class 2KB
DBTest$1.class 2KB
GestureTest.class 2KB
DBTest$1.class 2KB
GestureTest.class 2KB
ReadOtherPreferences.class 2KB
ReadOtherPreferences.class 2KB
SDFileExplorer$1.class 2KB
SDFileExplorer$1.class 2KB
SharedPreferencesTest$1.class 2KB
共 739 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
- qq_150419392014-05-20感谢楼主的分享,刚好在看这本书,有了源码就不用一个一个码了
magersu0512
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功