永发信息网

Android有没有文件选择器,类似Java的FileDialog与JFileChooser 没有的话该怎么实现呢?

答案:1  悬赏:10  手机版
解决时间 2021-11-18 15:55
Android有没有文件选择器,类似Java的FileDialog与JFileChooser 没有的话该怎么实现呢?
最佳答案
Java代码public class CopyOfFileChooserActivity extends Activity { private String mSdcardRootPath ; //sdcard 根路径 private String mLastFilePath ; //当前显示的路径 private ArrayList 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() ; 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(); } } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
西畴县第二幼儿园(普兰路)地址好找么,我有些
篮球规则中有对封眼睛的解释么
咀嚼食物的时候,左耳朵前面和牙齿相连的骨头
特陶卫浴(南乐专卖店)地址有知道的么?有点事
用于养花的珍珠岩需要和什么一起混着用,要怎
实况足球2012足球先生
降低凝固点的方法
win7,32+64位自适应系统要怎么安装成64位?
因周转出问题,急需贷款三万元,汕头谷饶地区
安装预算中排水管阻火圈是怎么计算的?
铜钱中的雕母与普通铜钱有什么区别
071501607803查一下到那里了
破泞之战视角可以调吗
晚上七点tvs4看什么?
瑞福生黑蒜多钱一盒
推荐资讯
板桥的凤凰于飞是真的红木的吗?
推荐几本经典哲学书籍
旺旺账号提取之后怎么营销
滦县汽车站到滦县火车站多远啊
1+2+3+4+5+6............+29的简便运算
分析化学中IR指的是什么
谁用过蔻琦护肤品 效果怎么样
做完好多次,内射一次`吃了硫停`然后过了一两
出纳就是财务吗?
202÷2口=口,口里填什么?
地理考试题目 在日本旅游发生地震室内的我们
请问一下,江淮星锐这车怎么样呢?值不值得买
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?