`
abc20899
  • 浏览: 910008 次
  • 性别: 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驱动程序

    有关SD卡得驱动程序,经由CORTEX-M3的驱动

    SD卡协议笔记,主要针对SPI接口

    针对SPI接口的SD卡得协议归类总结,并且针对编程中可能出现的问题做了一点分析

    SD_Server.rar_sdserver

    C++对SD卡得读写编程,适用于初学者,了解SD卡的应用

    SD卡驱动程序

    一个从官网上下来的SD驱动,标准而且可靠

    ATM数据采集卡得实现

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

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

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

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

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

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

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

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

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

    KETTLE远程执行

    kettle 远程执行 ,使用carte.bat,建立子服务器,并在本地使用命令行的方式调用

    stm324Gsd卡识别

    stm32对4G以上卡得识别 有详细的识别过程

    Telerik ChartView股票数据软件20170121

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

    复旦CPU卡FMCOS2.0手册

    复旦CPU卡开发手册,详细描述了CPU卡得各种命令及开发方法

    USB 驱动加载程序

    用于DOS系统下加载usb存储器驱动,能识别多种类型的TF读卡器或TF卡(内存卡)和U盘,并自动分配盘符,轻松在DOS下访问U盘或TF卡得数据。

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

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

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

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

    Telerik ChartView股票数据软件20170108

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

    USB转串口线驱动

    USB转串口线的驱动,在光盘里面安装 居然找不到,所以我就去卖这个卡得地方考了一次!安装上没有问题。XP和MAC都可以安装的!

    terracotta-3.7.7.tar.gz

    terracotta-3.7.7.tar.gz 官方网站卡得要死,有时候不一定能下载,把最近自己用的,算最新版吧,提供在国内网站下载吧。 2014-02-17下载的。

    Telerik ChartView股票数据软件20170422

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

Global site tag (gtag.js) - Google Analytics