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. apose 根据excel 导出模版

    string file = Server.MapPath("~/Excel/ZWxxtj.xls");            DataSet ds = new DataSet(); ...

  2. VK Cup 2016 - Qualification Round 1 (Russian-Speaking Only, for VK Cup teams) D. Running with Obstacles 贪心

    D. Running with Obstacles 题目连接: http://www.codeforces.com/contest/637/problem/D Description A sports ...

  3. JVM堆设置及调优

    1.JVM堆设置 -Xmx3550m 设置JVM最大堆内存 为3550M. -Xms3550m 设置JVM初始堆内存 为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内 ...

  4. Apache Hadoop 简介

    什么是Apache Hadoop? 在Apache Hadoop的项目开发可靠,可扩展,分布式计算开源软件. Apache Hadoop的软件库是一个框架,允许分布式处理大型数据集在集群计算机使用简单 ...

  5. ES6 Javascript 实用开发技巧

    ES6 实用开发技巧 定义变量/常量 ES6 中新增加了 let 和 const 两个命令,let 用于定义变量,const 用于定义常量 两个命令与原有的 var 命令所不同的地方在于,let, c ...

  6. Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

    使用Java的HttpURLConnection类可以实现HttpClient的功能,而不需要依赖任何其他类库.所有有时候大家就直接使用它来完成一些简单(或复杂)的功能.但是你活在伟大的{print ...

  7. nsq多播分发和负载均衡实验

    什么是nsq?请参考实时分布式消息平台nsq. 本地如何搭建nsq?请参考本地搭建nsq经验分享. 从NSQ的设计文档中得知,单个nsqd被设计为一次能够处理多个流数据,NSQ中的数据流模型是由str ...

  8. ORDER BY,GROUP BY 和DI STI NCT 优化

    读<MySQL性能调优与架构设计>笔记之ORDER BY,GROUP BY 和DI STI NCT 优化 2015年01月18日 18:51:31 lihuayong 阅读数:2593 标 ...

  9. 查找链表中倒数第k个结点

    题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNex ...

  10. Glide Picasso Fresco UIL 图片框架 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...