2013-07-02

10.2 文件管理器

能够浏览和管理手机/存储卡上的文件和文件夹,包括重命名、删除、新建、复制、粘帖等文件操作。

由于需要浏览大量的文件/文件夹,所以需要使用一个ListView,并且需要自定义列表项视图。

学习通过程序来定义布局文件

// 列表项数据

public class IconifiedText implements Comparable<IconifiedText> {

  // 文件名

  private String mText = “”;

  // 文件图标

  private Drawable mIcon = null;

  // 能否选中

  private boolean mSelectable = true;

  public IconifiedText(String text, Drawable bullet) {

    mIcon = bullet;

    mText = text;

  }

  // mText, mIcon, mSelectable等属性的Getter/Setter方法

  // 重写compareTo方法,比较文件名是否相同

  public int compareTo(IconifiedText other) {

    if(mText != null)

      return mText.compareTo(other.getText());

    else

      throw new IllegalArgumentException();

  }

}

// 列表项视图

public class IconifiedTextView extends LinearLayout {

  // 显示文件名

  private TextView mText = null;

  // 显示图标

  private ImageView mIcon = null;

  public IconifiedTextView(Context context, IconifiedText iconifiedText) {

    super(context);

    setOrientation(HORIZONTAL);

    // 添加图标到布局

    mIcon.setImageDrawable(iconifiedText.getIcon());

    mIcon.setPadding(8, 12, 6, 12);

    addView(mIcon, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    // 添加文件名到布局

    mText = new TextView(context);

    mText.setText(iconifiedText.getText());

    mText.setPadding(8, 6, 6, 10);

    mText.setTextSize(26);

    addView(mText, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

  }

  // 设置文件名

  public void setText(String words){

    mText.setText(words);

  }

  // 设置图标

  public void setIcon(Drawable bullet){

    mIcon.setImageDrawable(bullet);

  }

}

// 数据适配器

public class IconifiedTextListAdapter extends BaseAdapter {

  private Context mContext = null;

  private List<IconifiedText> mItems = new ArrayList<IconifiedText>();

  public IconifiedTextListAdapter(Context context){

    mContext = context;

  }

  // 添加列表项数据

  public void addItem(IconifiedText item) {

    mItems.add(item);

  }

  // 设置列表数据

  public void setListItems(List<IconifiedText> items) {

    mItems = items;

  }

  // 得到列表项个数

  public int getCount() {

    return mItems.size();

  }

  // 得到一个列表项

  public Object getItem(int position) {

    return mItems.get(position);

  }

  // 能否全部选中

  public boolean isAllItemsSelectable() {

    return false;

  }

  // 判断列表项能否被选中

  public boolean isSelectable(int position) {

    return mItems.get(position).isSelectable();

  }

  // 得到一个列表项的id

  public long getItemId(int position) {

   return position;

  }

  // 重写getView方法,得到IconifiedTextView对象

  public View getView(int position, View convertView, ViewGroup parent) {

    IconifiedTextView view = null;

    if(convertView == null) {

      view = new IconifiedTextView(mContext, mItems.get(position));

    } else {

      view = (IconifiedTextView) convertView;

      view.setText(mItems.get(position).getText());

      view.setIcon(mItems.get(position).getIcon());

    }

    return view;

  }

}

// 源文件FileManager.java代码片段

final LayoutInflater inflater = LayoutInflater.from(FileManager.this);

final View dialogView = inflater.inflate(R.layout.rename, null);

((TextView) dialogView.findViewById(R.id.textview01)).setText(“重命名");

((EditText) dialogView.findViewById(R.id.edittext01)).setText(file.getName());

Builder builder = new Builder(FileManager.this);

builder.setText(“重命名");

builder.setView(dialogView);

builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {

  public void onClick(DialogInterface dialog, int which) {

   

  }

});

Android 应用开发实例之文件管理器的更多相关文章

  1. android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)

    如有错漏请不吝拍砖指正,转载请注明出处,很感谢 桌面便签软件是android上经常使用软件的一种,比方比較早的Sticky Note,就曾很流行, Sticky Note的介绍能够參见 http:// ...

  2. Android 应用开发实例之情景模式

    2013-07-01 Android 应用开发实例 1. 情景模式 使用TabHost来实现主界面的布局. 设置一组RadioButton来切换不同的情景模式. 对比普通情景模式,定时情景模式需要加上 ...

  3. Android NDK开发实例教程

    WINDOWS系统+ Eclipse + NDK+Android 最近开始学习Android平台开发,Android还没有玩转,Java也是刚入门,这又要开始在Android中调用C语言,需要利用ND ...

  4. Android计算器开发实例

    Android简单计算器开发实例如图: ==================================================== activity_main.xml 代码如下: < ...

  5. android 浏览器开发实例

    android app需要通过手机显示网页信息还是比较常用的,比如我最近业余开发的 抢商铺游戏,需要对游戏规则做说明,规则会比较多,而且要经常变动,就想到用网页来展示,更新起来方便,不像应用,一旦发布 ...

  6. Android应用开发--MP3音乐播放器代码实现(一)

    需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1.   从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2.   迭代List集合,把每一个Mp3 ...

  7. Android应用开发实例篇(1)-----简易涂鸦板

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378328.html 一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想 ...

  8. Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)

    学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...

  9. WPF和Expression Blend开发实例:Adorner(装饰器)应用实例

    装饰器-- 表示用于修饰 UIElement 的 FrameworkElement 的抽象类 简单来说就是,在不改变一个UIElement结构的情况下,将一个Visual对象加到它上面. 应用举例: ...

随机推荐

  1. mysqldump之字符集问题解决

    最近导数据的需求真多,年底了大家都要做分析吗?近期使用mysqldump导出的中文出现乱码问题. mysqldump -uroot -ppassword -S /tmp/mysql9991.sock ...

  2. Ehcache缓存时间设置

    timeToLiveSeconds和timeToIdleSecondstimeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x:timeToIdleSeconds=y:缓存创建以后 ...

  3. ExtJs2.0学习系列(12)--Ext.TreePanel之第一式

    今天开始,我们就开始一起学习TreePanel了,道个歉,上篇的代码很乱阿. 我总是喜欢用最简单的例子开始,去理解最基本的使用方法,减少对i后面高级使用的干扰! TreePanel是继承自Panel, ...

  4. [转译] AD RMS 安装最佳实践

    在安装活动目录权限管理服务(ADRMS)时,请牢记以下几点: 将 AD RMS服务单独安装在一台服务器上——将 AD RMS与域控制器.微软邮件服务器(Microsoft Exchange Serve ...

  5. IDA IDC Tutorials: Additional Auto-Commenting

    https://www.hex-rays.com/products/ida/support/tutorials/idc/autocomment.shtml This program creates a ...

  6. linux 清空catalina.out日志 不需要重启tomcat

    # cd /usr/local/tomcat8.0/logs/ # echo "" > catalina.out

  7. DevExpress Winform 通用控件打印方法(允许可自定义边距) z

    DevExpress Winform 通用控件打印方法,包括gridcontrol,treelist,pivotGridControl,ChartControl,LayoutControl...(所有 ...

  8. Cocos2d-x3.2 TextureCache类异步载入功能解说

    本文TextureCache类异步载入功能的代码抽出,总共代码就200多行.感兴趣能够看看. 研究这个主要是由于项目中须要异步插入数据,但之前的方法在Android上总是崩溃所以想到TextureCa ...

  9. [Linux] du-查看文件夹大小-并按大小进行排序

    reference : http://blog.csdn.net/jiaobuchong/article/details/50272761# 某天,我想检查一下电脑硬盘的的使用情况,作为一个命令控,废 ...

  10. 创建一个简单的windows服务,每间隔一定时间重复执行批处理文件

    创建一个windows服务项目,增加App.config <?xml version="1.0" encoding="utf-8" ?> <c ...