
本文给大家讲解下AndroID文件选择器的使用。实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenfileDialog控件。
此实例的实现过程很简单,这样可以让大家快速的熟悉AndroID文件选择器,提高开发效率。
网上曾经见到过一个关于文件选择器的实例,很多人都看过,本实例是根据它修改而成的,但更容易理解,效率也更高,另外,本实例有自己的特点:
1、监听了用户按下Back键的事件,使其返回上一层目录。
2、针对不同的文件类型(文件vs文件夹 , 目标文件vs其他文件)做了特殊处理。
知识点一、 file 类的使用
文件选择器的主要功能是:浏览文件\文件夹、文件类型等;都是通过Java file类来实现的。
知识点二、调用方法说明
使用了startActivityForResult()发起调用以及onActivityResult()方法接收回调后的信息。
先贴上效果图如下:
其他的也没什么好说了,大家看看代码注释吧,很简单。
fileChooserActivity.java 实现文件选择的类 。
Java代码
public class copyOffileChooserActivity extends Activity { private String mSdcardRootPath ; //sdcard 根路径 private String mLastfilePath ; //当前显示的路径 private ArrayList<fileInfo> mfileLists ; private fileChooserAdapter mAdatper ; //配置适配器 private voID setGrIDVIEwAdapter(String filePath) { updatefileItems(filePath); mAdatper = new fileChooserAdapter(this,mfileLists); mGrIDVIEw.setAdapter(mAdatper); } //根据路径更新数据,并且通知Adatper数据改变 private voID updatefileItems(String filePath) { mLastfilePath = filePath ; mTvPath.setText(mLastfilePath); if(mfileLists == null) mfileLists = new ArrayList<fileInfo>() ; if(!mfileLists.isEmpty()) mfileLists.clear() ; file[] files = folderScan(filePath); if(files == null) return ; for (int i = 0; i < files.length; i++) { if(files[i].isHIDden()) // 不显示隐藏文件 continue ; String fileabsolutePath = files[i].getabsolutePath() ; String filename = files[i].getname(); boolean isDirectory = false ; if (files[i].isDirectory()){ isDirectory = true ; } fileInfo fileInfo = new fileInfo(fileabsolutePath,filename,isDirectory) ; //添加至列表 mfileLists.add(fileInfo); } //When first enter,the object of mAdatper don't initialized if(mAdatper != null) mAdatper.notifyDataSetChanged(); //重新刷新 } //获得当前路径的所有文件 private file[] folderScan(String path) { file file = new file(path); file[] files = file.Listfiles(); return files; } private AdapterVIEw.OnItemClickListener mItemClickListener = new OnItemClickListener() { public voID onItemClick(AdapterVIEw<?> adapterVIEw,VIEw vIEw,int position,long ID) { fileInfo fileInfo = (fileInfo)(((fileChooserAdapter)adapterVIEw.getAdapter()).getItem(position)); if(fileInfo.isDirectory()) //点击项为文件夹,显示该文件夹下所有文件 updatefileItems(fileInfo.getfilePath()) ; else if(fileInfo.isPPTfile()){ //是ppt文件 , 则将该路径通知给调用者 Intent intent = new Intent(); intent.putExtra(EXTRA_file_CHOOSER,fileInfo.getfilePath()); setResult(RESulT_OK,intent); finish(); } else { //其他文件..... toast(getText(R.string.open_file_error_format)); } } }; public boolean onKeyDown(int keyCode,KeyEvent event){ if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK){ backProcess(); return true ; } return super.onKeyDown(keyCode,event); } //返回上一层目录的 *** 作 public voID backProcess(){ //判断当前路径是不是sdcard路径 , 如果不是,则返回到上一层。 if (!mLastfilePath.equals(mSdcardRootPath)) { file thisfile = new file(mLastfilePath); String parentfilePath = thisfile.getParent(); updatefileItems(parentfilePath); } else { //是sdcard路径 ,直接结束 setResult(RESulT_CANCELED); finish(); } } } 此实例的界面稍显简陋,不过大家可以在此基础上完善,添加其他功能。本实例代码下载地址:
http://download.csdn.net/detail/qinjuning/4825392。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
总结以上是内存溢出为你收集整理的Android 文件选择器详解及实例代码全部内容,希望文章能够帮你解决Android 文件选择器详解及实例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)