android浏览SD卡的文件,简单实现浏览Android SD卡中的文件

----Main.java

public class Main extends Activity {

private TextView textView;

private Button button;

private ListView listView;

public File currentParentFile;

public File[] currentFiles;

public static  String sdcardDir ;

static {

try {

//sd卡的路径

sdcardDir = Environment.getExternalStorageDirectory().getCanonicalPath();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

textView = (TextView) findViewById(R.id.textView1);

button = (Button) findViewById(R.id.button1);

listView = (ListView) findViewById(R.id.listView1);

File root = new File(sdcardDir);

if(root.exists()){

currentParentFile = root;

currentFiles = root.listFiles();

updateListView(currentFiles);

}

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(Main.this, "当前路径无效,或没有文件",

Toast.LENGTH_SHORT).show();

} else {

currentParentFile = currentFiles[position];

currentFiles = tmp;

updateListView(currentFiles);

}

}

});

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

try {

if (!currentParentFile.getCanonicalPath().equals(

sdcardDir)) {

currentParentFile = currentParentFile.getParentFile();

currentFiles = currentParentFile.listFiles();

updateListView(currentFiles);

}

else

return;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

}

private void updateListView(File[] files) {

List> itemps = new ArrayList>();

for (int i = 0; i 

Map listItem = new HashMap();

if (files[i].isDirectory())

listItem.put("icon", R.drawable.folder);

else

listItem.put("icon", R.drawable.file);

listItem.put("name", files[i].getName());

itemps.add(listItem);

}

SimpleAdapter simpleAdapter = new SimpleAdapter(this, itemps,

R.layout.listitem, new String[] { "icon", "name" }, new int[] {

R.id.imageView1, R.id.text });

listView.setAdapter(simpleAdapter);

try {

textView.setText("当前路径为:"+currentParentFile.getCanonicalPath());

} catch (IOException e) {

e.printStackTrace();

}

}

}

布局文件----main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="${relativePackage}.${activityClass}" >

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="当前路径:" />

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:text="返回上一级目录" />

android:id="@+id/listView1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/button1"

android:layout_alignParentLeft="true"

android:layout_below="@+id/textView1" >

效果:

d9b2de8f83c0f2aa842152a0babaea88.png

listview的每一条的布局:

---listitem.xml

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/imageView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:src="@drawable/ic_launcher" />

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_marginTop="15dp"

android:layout_toRightOf="@+id/imageView1"

android:text="TextView" />

demo运行效果:

fa344f73d41fccb6b3eab7515a957b49.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java线程状态Jstack线程状态BLOCKED/TIMED_WAITING/WAITING解释

一、线程5种状态 新建状态(New) 新创建了一个线程对象。 就绪状态(Runnable) 线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使…

彩票相关知识

很多人做梦都想中得彩票头奖,很多人希望天上能掉下馅饼来砸中自己,很多人在作白日梦……彩票是一种风险投资,是一种四两拨千斤的气势,更是一种众人拾柴火焰高的真实写照,没买过彩票的人是很难体会那种美好的期望及期望…

(模拟信号/数字信号)分别以(模拟信号/数字信号)中传输方式

1、基本概念、基本术语和数据通信系统 1.基本概念和基本术语 数据:能够由计算机处理的数字、字母和符号等具有一定意义的实体。 分类:模拟数据可以在一定的数据区域中取连续的值,如声音和图像;数字数据只能取离散的数值&#xff0…

android11 rom,小米打造基于安卓11的ROM来了:米10尝鲜

原标题:小米打造基于安卓11的ROM来了:米10尝鲜据XDA报道,距离Android 11正式版发布还有几天时间,9月8日正式面向Pixel 2、Pixel 3、Pixel 4和Pixel 3a等机型推送Android 11正式版。另一方面,各大手机品牌已经紧锣密鼓开…

基于 HTML5 WebGL 的 3D 服务器与客户端的通信

这个例子的初衷是模拟服务器与客户端的通信,我把整个需求简化变成了今天的这个例子。3D 机房方面的模拟一般都是需要鹰眼来辅助的,这样找产品以及整个空间的概括会比较明确,在这个例子中我也加了,这篇文章就算是我对这次项目的一个…

七种常见的核酸序列蛋白编码能力预测工具 | ncRNAs | lncRNA

注:这些工具的应用都是受限的,有些本来就是只能用于预测动物,在使用之前务必用ground truth数据来测试一些。我想预测某一个植物的转录本,所以可以拿已经注释得比较好的拟南芥来测试一下。(测试的结果还是比较惊人的&a…

寒武纪找到了引领中国AI芯片走向世界的路

大约6亿年前在地质学上被称作“寒武纪”的时代,大量无脊椎动物在短时间内出现“生命大爆发”。如今,“寒武纪”这个名字再次被人们提及,它源自中科院计算所研发的人工智能芯片处理器的命名,意喻人工智能即将迎来大爆发的时代。“寒…

浅谈PPM (Project Portfolio Management)

前言: 本文以纯理论性的PPM讲解为主,不会涉及到具体如何实施,我会在以后介绍详细的PPM实施方案介绍。 PPM,可能很多人并不清楚甚至可能没听说过,这是一个近些年才流行起来的概念,是Project Portfolio Mana…

Android怎么插手机卡,魅蓝E手机卡怎么装 魅蓝E手机SIM卡安装图文教程

昨天下午,魅族发布了全新系列魅蓝手机——魅蓝E,定位魅蓝高端产品线,售价1299元,李楠号称魅蓝E采用三四千元的旗舰机工艺,外观/屏幕/拍照提升明显。此外,魅蓝E依旧支持全网通双卡双待。那么魅蓝E怎么插卡/装…

快速幂总结

快速幂总结 快速幂这个东西比较好理解,但实现起来到不老好办,记了几次老是忘,今天把它系统的总结一下防止忘记。 首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来…

第三章

一.项目前期的主要工作 1.现状分析 ①.硬件分析 ②.软件分析 2.需求收集 3.粗略设计 ①.体系结构分析 ②.硬件(网络)设计 ③.应用系统设计 ④.安全设计 ⑤.配套设计 4.可行性分析 二.结构的项目前期实例 1.组织分析 3.需求收集 4.粗略设计 ①.系统体系结…

荣耀magic3会用鸿蒙,赵明:荣耀Magic3芯片领先行业,大家看到以后会换掉手机!...

荣耀CEO赵明亲自参加高通2021技术峰会,宣布与高通达成战略合作,未来全系产品采用高通平台。赵明同时透露未来的产品动向,不排除未来与华为继续合作,采用鸿蒙操作系统的可能。赵明表示,Android操作系统依旧是荣耀的首选…

三周第三次课 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

3.7 su命令1、su命令su命令是用来切换用户的;su命令需要使用- 进行切换,如果不使用- 也可以,但当前目录是在root下,没有彻底切换在root下 使用su命令创建文件,以指定用户的身份创建文件切换后显示-bash-4.2因为user5的…

html坐标绘制路径,canvas学习笔记之绘制简单路径

1 线段(直线路径)绘制线段一般步骤:moveTo(x,y) 移动画笔到指定的坐标点(x,y)lineTo(x,y) 使用直线连接当前端点和指定的坐标点(x,y)stroke() 根据当前的画线样式,绘制当前或已经存在的路径2 矩形路径绘制矩形路径一般步骤:rect(x, y, width, height) 矩形路径&…

增加表单的文字段的html的代码是,表单及表单新增元素(示例代码)

要想更好运用表单就要了解表单的的更多元素与属性,首先看看对表单基本了解。表单的基本了解 元素用于用户输入数据的收集元素是最重要的表单元素,有许多type其中是用于向表单处理程序提交表单的按钮。元素 元素定义待选择的下拉列表选项,元素…

给博客或站点加入百度统计

概述 记得刚接触百度统计的时候,苦于没有个人网站,不能加入统计代码查看访问量等数据。然后渐渐的忘了这件事。之前看别人博客中提及了百度统计,然后粗略的看了一下加入方法,觉得很惊喜,太简单了! 加入方法…

项目规划管理

项目规划管理 - 1 项目规划是预测未来,确定要达到的目标,估计会碰到的问题,并提出实现目标、解决问题的有效方案、方针、措施和手段的过程。( 摘自百度百科) 大家应该都看过不少美国大片,是否记得很多片子里,特别是偷…

android9叫什么名字,白猜这么多名字!谷歌Android 9.0正式发布:命名Android Pie

日前,谷歌对外公布了Android P的beta版,并向索尼Xperia XZ2、小米Mi Mix 2S、诺基亚7 Plus、Oppo R15 Pro、Vivo X21、一加6和Essential PH-1开放测试。今天,谷歌终于宣布正式发布Android 9.0的正式版本。据外媒GSMArena报道,今天…

再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

原文:再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化继上篇文章《绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来》发布后在博客园首页展示得到了挺多的阅读量,我这篇文章就是对上篇文章的千万…

wps html编辑表格,WPS 2017个人版演示word使用技巧(wps2017表格使用技巧)

wps2017是一款非常深受用户喜爱的办公软件。在2017这个新的版本中,依旧继承了它之前兼容免费、体积小、多种界面切换、云办公等众多优秀的功能特点,下面小编就来教大家wps2017的使用方式使用技巧:一、wps2017个人版word使用技巧技巧一&#x…