Android 应用开发实例之文件管理器
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 应用开发实例之文件管理器的更多相关文章
- android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
如有错漏请不吝拍砖指正,转载请注明出处,很感谢 桌面便签软件是android上经常使用软件的一种,比方比較早的Sticky Note,就曾很流行, Sticky Note的介绍能够參见 http:// ...
- Android 应用开发实例之情景模式
2013-07-01 Android 应用开发实例 1. 情景模式 使用TabHost来实现主界面的布局. 设置一组RadioButton来切换不同的情景模式. 对比普通情景模式,定时情景模式需要加上 ...
- Android NDK开发实例教程
WINDOWS系统+ Eclipse + NDK+Android 最近开始学习Android平台开发,Android还没有玩转,Java也是刚入门,这又要开始在Android中调用C语言,需要利用ND ...
- Android计算器开发实例
Android简单计算器开发实例如图: ==================================================== activity_main.xml 代码如下: < ...
- android 浏览器开发实例
android app需要通过手机显示网页信息还是比较常用的,比如我最近业余开发的 抢商铺游戏,需要对游戏规则做说明,规则会比较多,而且要经常变动,就想到用网页来展示,更新起来方便,不像应用,一旦发布 ...
- Android应用开发--MP3音乐播放器代码实现(一)
需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1. 从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2. 迭代List集合,把每一个Mp3 ...
- Android应用开发实例篇(1)-----简易涂鸦板
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378328.html 一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想 ...
- Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)
学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...
- WPF和Expression Blend开发实例:Adorner(装饰器)应用实例
装饰器-- 表示用于修饰 UIElement 的 FrameworkElement 的抽象类 简单来说就是,在不改变一个UIElement结构的情况下,将一个Visual对象加到它上面. 应用举例: ...
随机推荐
- LINUX 高可用群集之 ~Corosync~
Corosync:它属于OpenAIS(开放式应用接口规范)中的一个项目corosync一版本中本身不具 备投票功能,到了corosync 2.0之后引入了votequorum子系统也具备了投票功能了 ...
- corosync
前提: )本配置共有两个测试节点,分别node1.magedu.com和node2.magedu.com,相的IP地址分别为172.: )集群服务为apache的httpd服务: )提供web服务的地 ...
- ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)
下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整 ...
- android 广告平台 keymob
访问地址: http://www.keymob.com/
- 【docker】docker network常用命令参数
1.帮助命令 docker network --help 2.查看docker默认三种网络 docker network ls 3.创建自定义网络,如果不指定,默认创建类型为bridge类型 dock ...
- MySQL数据库的概念
学习数据库的一些知识.写写博客方便梳理以及巩固知识. 关于什么是数据库就举一个样例来说明,说的可能不够准确,仅仅要明确一个大概的意思就够了.深刻的学习还是要去看书的. 讲讲生活中有关数据的样例:在一个 ...
- 【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
上次在<[php]利用原生态的JavaScript Ajax为php进行MVC分层设计,兼容IE6>(点击打开链接) 一文中,对于php查询Mysql数据库的model.php写法还不够完 ...
- 【GISER&&Painter】Chapter01:WebGL渲染初体验
基于上一篇OpenGL的渲染原理,这两周又陆续接触了一些关于WebGL绘图的一些内容,因为刚入门,很多东西又很晦涩,所以特意花了小半天的时间整理了一下,特此记录. 零 画一个多边形吧! 把一个多边形 ...
- 卷积神经网络CNN 手写数字识别
1. 知识点准备 在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念. a. 卷积 关于卷积的概念和细节可以参考这里,卷积运算有两个非常重要特性, ...
- IDE的文件和代码模板
设置IDE的的模板,可以在创建文件的时候,自动产生模板内容,模板里可以 模板头设置: # -*- coding: utf- -*- """ --------------- ...