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. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 1 Edition) C. Little Artem and Random Variable 数学

    C. Little Artem and Random Variable 题目连接: http://www.codeforces.com/contest/668/problem/C Descriptio ...

  2. Digital Adjustment of DC-DC Converter Output Voltage 电阻选择

  3. 【spring boot】整合LCN,启动spring boot2.0.3 启动报错:Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

    spring boot 2.0.3启动报错: Error starting ApplicationContext. To display the conditions report re-run yo ...

  4. ThinkPHP:入门安装 (1)

    1.下载ThinkPHP包 2.引入ThinkPHP.php创建目录文件, 默认ThinkPHP框架所在文档目录 <?php //加载框架入口文件 require './ThinkPHP/Thi ...

  5. Javascript:前端利器 之 JSDuck

    背景 文档的重要性不言而喻,对于像Javascript这种的动态语言来说就更重要了,目前流行的JDoc工具挺多的,最好的当属JSDuck,可是JSDuck在Windows下的安装非常麻烦,这里就写下来 ...

  6. booksleeve 使用

    By offering pipelined, asynchronous, multiplexed and thread-safe access to redis, BookSleeve enables ...

  7. UBUNTU 14.04 INSTALL nsenter

    cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-2.25.tar.gz | tar - ...

  8. iOS开源项目:JSONKit

    一个Json解析库,其特点是代码简单,只有一个.h和.m文件. https://github.com/johnezang/JSONKit JSON(JavaScript Object Notation ...

  9. 如何在jenkins上通过mvn方式运行sonar

    1.首先在jenkins所在机器的的maven配置文件(settings.xml)里做如下配置: <profile> <id>sonar</id> <acti ...

  10. 解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题

    最近在做使用openssl链接http和https的项目,编译时出现以下问题. /usr/local/openssl/lib/libcrypto.a(async.o): In function `as ...