在用户配置的地方就有可能需要用户选择文件夹的功能,自己做了一个小的实例。

发上来给自己做一个简单的记录!

先上功能截图:

  

主要代码献上(在这里不再累赘的写主活动的内容,只讲解实现部分):

首先是XML的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"tools:context="com.accumulation.opensystemfileordir.app.MainActivity"><TextViewandroid:id="@+id/fileText"android:text="@string/hello_world"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button"android:id="@+id/button"android:layout_centerVertical="true"android:layout_centerHorizontal="true" /></RelativeLayout>

选择界面布局:

ListVIew用于显示列表,LinearLayout中的用于显示当前选择以及确定和向上按钮(向上按钮融合在TextView中)

其次是ListView中中没一行的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#00000000"><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/listview_selected"android:padding="6px"><ImageViewandroid:id="@+id/icon"android:layout_width="30dip"android:layout_height="30dip"></ImageView><TextViewandroid:id="@+id/text"android:layout_gravity="center_horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textColor="@drawable/black"></TextView></LinearLayout>
</LinearLayout>

然后是代码部分,主要为一个继承ListViewActivity的类和一个适配器类:

/*** Created by Qiujuer on 14-3-6.*/
public class FileDirListAdapter extends BaseAdapter {private LayoutInflater mInflater;private Bitmap mIcon;private List<String> paths;public FileDirListAdapter(Context context, List<String> paths) {this.mInflater = LayoutInflater.from(context);this.paths = paths;this.mIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.folder);}public int getCount() {return paths.size();}public Object getItem(int position) {return paths.get(position);}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {convertView = mInflater.inflate(R.layout.file_row, null);holder = new ViewHolder();holder.text = (TextView) convertView.findViewById(R.id.text);holder.icon = (ImageView) convertView.findViewById(R.id.icon);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.icon.setImageBitmap(mIcon);holder.text.setText(new File(paths.get(position).toString()).getName());return convertView;}private class ViewHolder {TextView text;ImageView icon;}
}

Activity实现的代码如下:

/*** Created by Qiujuer on 14-3-6.*/
public class FileDirManagerMainActivity extends ListActivity {private List<String> paths = null;private String rootPath = "/";private String curPath = "/";private TextView mPath;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_file_manager_main);mPath = (TextView) findViewById(R.id.mPath);mPath.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {getFileDir(new File(curPath).getParent());}});mPath.setEnabled(true);Button buttonConfirm = (Button) findViewById(R.id.buttonConfirm);buttonConfirm.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Intent data = new Intent(FileDirManagerMainActivity.this, MainActivity.class);Bundle bundle = new Bundle();bundle.putString("file", curPath);data.putExtras(bundle);setResult(2, data);finish();}});paths = new ArrayList<String>();getFileDir(rootPath);}private void getFileDir(String filePath) {paths.clear();mPath.setText(curPath = filePath);//设置向上是否可用if (filePath.equals(rootPath))mPath.setEnabled(false);elsemPath.setEnabled(true);File f = new File(filePath);File[] files = f.listFiles();//判断当前下是否有文件夹if (files.length <= 0)return;for (int i = 0; i < files.length; i++) {//过滤一遍//1.是否为文件夹//2.是否可访问if (files[i].isDirectory() && files[i].listFiles() != null) {paths.add(files[i].getPath());}}setListAdapter(new FileDirListAdapter(this, paths));}@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {this.getFileDir(paths.get(position));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.file_manager_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();String sdDir = "/sdcard/";switch (id) {case R.id.action_dir_camera:this.getFileDir(sdDir + "camera");break;case R.id.action_dir_download:this.getFileDir(sdDir + "download");break;case R.id.action_dir_music:this.getFileDir(sdDir + "music");break;case R.id.action_dir_photo:this.getFileDir(sdDir + "photo");break;case R.id.action_dir_video:this.getFileDir(sdDir + "video");break;}return super.onOptionsItemSelected(item);}}

OK,完工。因为我只需要选择文件夹的功能,所以在Activity的类中我过滤了文件的列表显示。

当然如果你是选择文件,那么你可以添加上,并添加上对文件的打开操作即可。

代码献上(Android Studio,用Eclipse中的无法导入,但是可以自行添加进去即可。)

点击打开链接

转载请注明出处!

[Android] 软件中选择文件夹功能相关推荐

  1. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  2. Android项目中res文件夹的作用

    做过Android项目的人都会发现项目中有一个res文件夹,在这个文件夹下有drawable文件夹.layout文件夹.mipmap文件夹.values文件夹和menu文件夹. drawable文件夹 ...

  3. android 点击选择文件夹,Android----弹出框选择文件夹目录以及启用新Task打开文件_IT168文库.pdf...

    Android弹弹 出出框框 选选择择 文文件件 夹夹 目目录录 以以及及 启启用用新新 的的T ask打打 开开文文件件 首首先先看看效效果果 图图 第第一一个个 Act iv it y很很简简单单 ...

  4. 通过adb打开Android系统中data文件夹下的app,database的的文件

    网上有太多的办法,看的眼花扰乱, 如果你的情况和我是类似的那么久这么做 首先测试机是小米4,系统是MUIU8 7.4.24开发版的,Android6.0.1 小米的手机这点好,在安全管理中就可以roo ...

  5. 实现windows标准的选择文件夹功能

    Delphi里有个函数SelectDiretory,重载了两种形式: function SelectDirectory( const Caption: string; const Root: Wide ...

  6. Android Studio中新增文件夹并新建Activity时,编译后提示“程序包R不存在”解决

    开始看到网上的各种方法都不是很好用,最后看到一种方法,其实超级简单,直接加进来就行了. 比如我的工程中每个activity中都有 package com.example.chen.bluetestap ...

  7. Android Studio mipmap各文件夹下图片尺寸一览表

    Android studio中mipmap文件夹有五个,分别对应不同的图片分辨率,具体尺寸表见下图.

  8. htc android sd卡,【HTC T328W】Android系统中SD卡各文件夹功能详解

    希望你的补充说明,让我们一起来清理内存卡吧注意,软件没有卸载前,不建议删除其文件荚!1..android_secure       是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了,小 ...

  9. Android中项目中各个文件夹的含义和用途详解

    1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片. ...

  10. oracle中app文件夹下,Oracle Form开发之folder(文件夹)功能开发(一)

    一.模板制作:YSFOLDER.FMB 打开TEMPLATE.FMB,如果打开的是APPSTAND.FMB,以下步骤省略: 1.FORM级触发器: 1.在WHEN-NEW-FORM-INSTANCE后 ...

最新文章

  1. 【Android 逆向】ART 脱壳 ( 修改 /art/runtime/dex_file.cc#OpenCommon 系统源码进行脱壳 )
  2. BT项目的运作之一项目建设方案与BT总包方的选择
  3. su: user tomcat does not exist
  4. 【方案分享】2021年钟薛高营销策划方案.pptx(附下载链接)
  5. Linux环境下FFMPEG的安装与配置
  6. 简谈PCB设计软件对比
  7. pr用什么显卡比较好_学ps pr ae用什么电脑比较好?有什么配置要求?
  8. CAD编辑指南5:输出高清图片和新建空白图纸
  9. 小马哥linux网络培训,linux基础入门
  10. 遍历文件夹进行点云格式转换 PCD转BIN BIN转PCD PCD转TXT TXT转PCD PLY转PCD
  11. 剑指offer-二叉树中值等于某个数的路径
  12. SCHTASKS windows计划任务
  13. 无论多大年纪,请保留一份童真和幻想
  14. 【NLP】动手实现一个句子生成器
  15. 苹果手机计算机报不了名,iPhone8无法连接电脑并且不弹出信任对话框怎么办?...
  16. 帕金森病会引起哪些并发症
  17. 百度云主机只能访问首页,bcloud_nginx_user.conf配置
  18. POJ 2305大数求余
  19. 很真实的语音转文字,微软厉害
  20. 教室占座小程序 微信小程序毕业设计开发

热门文章

  1. 【Codeforces Round #546 (Div. 2) E】Nastya Hasn't Written a Legend【线段树】
  2. Redpill:在后渗透中实现反向TCP Shell
  3. 关于表数据同步使用update_time时的注意事项
  4. dao获取到mysql存储函数_GreenDao3.0使用
  5. 1个系统节拍 c语言_【课程】乐理知识讲重点第九课(节拍与节奏)
  6. php在html中if,html里的if注释怎么使用
  7. Java 并发编程常识 —— by 梁飞
  8. 微信小程序 this.data与this.setData
  9. iOS通过CIFilter对图像进行滤镜处理
  10. Chrome firefox ie等浏览器空格nbsp;宽度不一样