`
abc20899
  • 浏览: 932740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于SD卡得文件选择器

 
阅读更多
◦public class ActivityFilePicker extends Activity {   
◦  
◦        private ListView listViewFilePicker;   
◦        private File mCurrentDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); //根目录位置   
◦        AdapterFilePicker mFileAdapter; //ListView适配器   
◦        String fileEndings[] = { "mp3" };       //显示的文件类型   
◦  
◦        @Override  
◦        public void onCreate(Bundle savedInstanceState) {   
◦                super.onCreate(savedInstanceState);   
◦                setContentView(R.layout.layout_activityfilepicker);   
◦                listViewFilePicker = (ListView) findViewById(R.id.listview);   
◦                listViewFilePicker.setCacheColorHint(0x00000000);   
◦                mFileAdapter = new AdapterFilePicker(this);   
◦                listViewFilePicker.setAdapter(mFileAdapter);   
◦                //Item点击事件   
◦                ListView.OnItemClickListener lv2click = new ListView.OnItemClickListener() {   
◦                        public void onItemClick(AdapterView parent, View view,   
◦                                        int position, long id) {   
◦                                int fid = mFileAdapter.getItemType((int) id);   
◦                                String mPath = "";   
◦                                if (fid == 1) { //文件类型1为文件夹,点击进入该文件夹目录   
◦                                        String s1 = mFileAdapter.getItem((int) id).name;   
◦                                        if (s1.equals("..")) {   
◦                                                mPath = mCurrentDirectory.getParent();   
◦                                        } else {   
◦                                                mPath = mCurrentDirectory.getPath() + "/" + s1 + "/";   
◦                                        }   
◦                                        mCurrentDirectory = new File(mPath);   
◦                                        ListFile(mCurrentDirectory);   
◦                                } else { //返回选中的文件的Path   
◦                                        Bundle bundle = new Bundle();   
◦                                        bundle.putString("path", mCurrentDirectory.getPath()   
◦                                                        + "/" + mFileAdapter.getItem((int) id).name);   
◦                                        Intent mIntent = new Intent();   
◦                                        mIntent.putExtras(bundle);   
◦                                        setResult(RESULT_OK, mIntent);   
◦                                        ActivityFilePicker.this.finish();   
◦                                }   
◦                        }   
◦                };   
◦                ListFile(mCurrentDirectory);   
◦                listViewFilePicker.setOnItemClickListener(lv2click);   
◦        }   
◦  
◦        /**  
◦         * 列出该目录的文件  
◦         * @param aDirectory  
◦         */  
◦        private void ListFile(File aDirectory) {   
◦                mFileAdapter.clearItems();   
◦                mFileAdapter.notifyDataSetChanged();   
◦                listViewFilePicker.postInvalidate();   
◦                if (!aDirectory.getPath().equals("/sdcard")) {   
◦                        FileData fd = new FileData();   
◦                        fd.name = "..";   
◦                        fd.type = 1;   
◦                        mFileAdapter.addItem(fd);   
◦                }   
◦                for (File f : aDirectory.listFiles()) {   
◦                        if (f.isDirectory()) {   
◦                                FileData fd = new FileData();   
◦                                fd.name = f.getName();   
◦                                fd.type = 1;   
◦                                mFileAdapter.addItem(fd);   
◦                        } else {   
◦                                if (checkEnds(f.getName().toLowerCase())) {   
◦                                        FileData fd = new FileData();   
◦                                        fd.name = f.getName();   
◦                                        fd.type = 0;   
◦                                        mFileAdapter.addItem(fd);   
◦                                }   
◦                        }   
◦                }   
◦                mFileAdapter.notifyDataSetChanged();   
◦                listViewFilePicker.postInvalidate();   
◦        }   
◦  
◦        private boolean checkEnds(String checkItsEnd) {   
◦                for (String aEnd : fileEndings) {   
◦                        if (checkItsEnd.endsWith(aEnd))   
◦                                return true;   
◦                }   
◦                return false;   
◦        }   
◦}  


由于模块结构很简单,所以把遍历文件的方法放在Activity上了

◦public class AdapterFilePicker extends BaseAdapter {   
◦        private Context mContext;   
◦        private Vector mItems = new Vector();   
◦        private LinearLayout layout, layout_more;   
◦        private LayoutInflater inflate;   
◦        private TextView textViewItem;   
◦  
◦        public AdapterFilePicker(Context context) {   
◦                mContext = context;   
◦                inflate = (LayoutInflater) mContext   
◦                                .getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE);   
◦        }   
◦  
◦        public void addItem(FileData item) {   
◦                mItems.add(item);   
◦        }   
◦  
◦        public FileData getItem(int it) {   
◦                return (FileData) mItems.elementAt(it);   
◦        }   
◦  
◦        public int getCount() {   
◦                return mItems.size();   
◦        }   
◦  
◦        public long getItemId(int arg0) {   
◦                return arg0;   
◦        }   
◦  
◦        public int getItemType(int arg0) {   
◦                return getItem(arg0).type;   
◦        }   
◦  
◦        public void clearItems() {   
◦                mItems.clear();   
◦        }   
◦  
◦        public View getView(int position, View view, ViewGroup arg2) {   
◦                if(null == view){   
◦                        view = (LinearLayout) inflate.inflate(R.layout.item_filepicker_listview, null);   
◦                }   
◦                textViewItem = (TextView) view.findViewById(R.id.textViewFileName);   
◦                textViewItem.setText(getItem(position).name);   
◦                return view;   
◦        }   
◦  
◦}  


◦/** 
◦ * 文件结构 
◦ * @author Administrator 
◦ * 
◦ */ 
◦public class FileData {  
◦                public String name; //文件名  
◦                public int type; //文件类型  
◦} 
分享到:
评论

相关推荐

    SD卡驱动程序

    2. 调试工具:使用示波器、逻辑分析仪等硬件工具配合软件日志、调试器来诊断驱动问题。 3. 兼容性测试:SD卡驱动需要在各种硬件和操作系统版本上进行广泛测试,以确保兼容性和稳定性。 四、SD卡驱动的更新与安全 ...

    ATM数据采集卡得实现

    本文详细的阐述了ATM数据采集卡的实现、应用的发展前景

    AE黑鱼工具箱 -剪映字幕转SRT字幕文件.rar原创

    剪映的智能字幕真的不错,正确率高,断句好,时间卡得很准。如果能导出srt字幕,用于其他软件是不是更好呢?方法和工具是很多的,主要有两类:第一类,找到字幕缓存文件,使用专用工具转换成st字幕,此类工具很多,有...

    修复MSDN 2001无法打开MSDN130.COL的文件的方法及文件免费

    缺省用hh.exe打不开 VS6MSDN里的MSDN130.COL的文件,如果MSDN不是安装的话。 可以通过下面的办法打开: 按照文件说明操作,可以打开帮助。...现在1000M访问MSDN,卡得不要不要的,还是本地的访问速度快!

    GgOA-master_即使厄本那_源码

    1. "java记事本":这可能意味着GgOA项目包含一个基于Java实现的文本编辑器或记事本应用程序。在Java中开发记事本应用是常见的编程练习,通常用于学习文件操作、GUI设计等基础概念。 2. "henksjklsjlkajls":这部分看...

    USB转串口线驱动

    描述中提到的“卖这个卡得地方”可能是指购买USB转串口设备的零售商或制造商网站,用户在那里找到了合适的驱动程序。值得注意的是,这个驱动程序兼容Windows XP操作系统,这是一款较老但仍然广泛使用的系统。同时,...

    KETTLE远程执行

    - 在Kettle的Job编辑器中,可以通过右键点击“Sub-transformation”或“Sub-Job”,选择“New Server”来创建一个新的远程服务器。 - 配置远程服务器时,需要输入服务器的IP地址(如192.168.0.237)和监听端口(如...

    钢丝绳牵引带式输送机防倒转系统设计与分析

    论文介绍了钢丝绳牵引带式输送机防倒转系统的设计,详细介绍了起制动作用的卡绳器采用楔块式,利用其自锁原理,可以将钢丝绳卡得更牢固。并运用有限元分析软件ANSYS对卡绳器中关键部件楔块和楔背进行应力分析,得到应力...

    加速人生图文使用教程:电脑卡怎么办?加速人生全面提速电脑.zip

    你是否正在为卡得“一动不动”的电脑系统而纠结不已?小编分享了一些关于各种情况下电脑卡的解决办法,帮助你提速电脑系统,不再为电脑卡纠结!顺便推荐给大家一款功能齐全,使用方面的电脑系统加速软件——加速人生。...

    Telerik ChartView股票数据软件20170121

    另外这次使用了Telerik的Direct2D呈现图形,由于有庞大的Chart同步,在大数据量的情况下,仍旧不是很流畅,但能忍受,可以考虑一次加载所有数据,然后控制缩放区域,用Telerik的基于图形的缩放,应该会很流畅,比...

    宿舍管理系统论文_程情情.doc

    沈阳卡得智能 智慧景区 智慧校园 项目。 宿舍管理功能系统2020工作论文提交西安交通大学继续教育学院

    护林员森林管护巡检管理系统设计方案-GPS巡检系统-智能巡检管理系统方案.doc

    为了响应国家“科技兴林”的政策,提高生产力并改变传统的工作模式,卡得智能科技推出了《护林员森林管护智能巡检系统》。这套系统旨在强化护林员的管理工作,确保国家重点公益林、地方公益林和天然林资源得到有效的...

    pika-pokedex-nextjs:使用next.js的Pokedex PWA生产就绪示例

    匹卡得克斯 介绍 Pikadex是使用JAM堆栈技术和无服务器基础架构的Pokemon Pokedex PWA示例。 您可以浏览正在运行的示例 您可以使用预览源代码 Pokedex功能 探索神奇宝贝。 按名称搜索宠物小精灵。 请参阅详细信息...

    Telerik ChartView股票数据软件20170108

    这是用Telerik ChartView设计的股票数据采集及分析软件,目前只完成了数据的采集和图形呈现,还... 最开始使用的是WPFVisifire呈现,但拖放时卡得不行,换成Telerik后,拖放时如丝般顺滑,看来WPF控件的优化非常重要。

    Telerik ChartView股票数据软件20170422

    最开始使用的是WPFVisifire呈现,但拖放时卡得不行,换成Telerik后,拖放时如丝般顺滑,看来WPF控件的优化非常重要。 之前的上传 "Telerik ChartView股票数据软件20170121"可以作废 相对于之前的上传的,这次主要...

    免单快车聚划算淘宝秒杀抢拍器 v2017.1.1.zip

    软件采用IE浏览器内核,网页可视化,所有操作过程透明安全。 秒杀答题练习:秒杀答题练习为免费功能,可尽情模拟淘宝1元秒杀答题 开启大家帮忙抢:一台电脑上可同时开启软件多进程抢一个宝贝;不同的电脑上同时...

    terracotta-3.7.7-2013-08-19_16-03-48-installer(jar安装包)

    terracotta-3.7.7-2013-08-19_16-03-48-installer(jar安装包) 官方网站卡得要死,有时候不一定能下载,把最近自己用的,算最新版吧,提供在国内网站下载吧。 2014-02-17下载的。

    MySQL 句柄数占用过多的解决方法

    在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理器的性能卡,发现句柄数竟然达到了10万!怪不得无论使用什么程序都卡得很。  网上...

    惠普多功能一体报错 Document Feeder Jam的解决办法.docx

    惠普多功能一体机在使用过程中可能会遇到“Document Feeder Jam”错误,这通常表示自动文档进纸器(ADF)中有纸张或者其他物体卡住,阻碍了正常的工作流程。以下是一份详细的解决步骤来帮助你排除这个故障: 1. **...

    SQL Server 2005安装配置方法图文教程 完美兼容Win7所有版本

    装完之后用起来,由于Microsoft SQL Server还需要比较多的运行资源,玩起来卡得不要不要的,最后Microsoft SQL Server给我留下了很难用很难消化的形象。 不过现在看来,Microsoft SQL Server的SQL2005版本在4G就是...

Global site tag (gtag.js) - Google Analytics