- 浏览: 85521 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (56)
- Flex (10)
- Android SQLite (3)
- Android (16)
- ListView (1)
- Android 多线程 (1)
- Android Google Maps (1)
- Flex 基础 (1)
- Android ImageView (0)
- Android WebService (0)
- Android 杂项 (2)
- Android 主题与样式 (1)
- Android 数据库 (1)
- Android 短信 (2)
- Ubuntu 11.04 for 64 (2)
- SharedPreferences (2)
- manifest (1)
- 杂项 (9)
- Android 网络 (1)
最新评论
-
DUANLESINIAN:
楼主配置文件讲的不清不楚,应该是这样的:<applica ...
在任意位置获取应用程序Context -
andytang_bin:
我QQ 912180974
解决 Android 下载中文文件名问题 -
andytang_bin:
还是不行。 能Q上联系吗?!
解决 Android 下载中文文件名问题
应该说很多的操作系统上面都提供了TreeView空间,实现树形结构,这个树形结构的应用时很广泛的,而Google开发Android的时候出于Android手机是触摸屏幕的考虑,用手指操作树形结构很不方便,从这方面考虑没有提供TreeView的空间,而是只是提供了一个ExpandableListView:android中的二级树型Widget,虽然已经能满足不少的功能需求,例如书签的功能就可以使用这个控件,但是随着应用的不断增多这个就不能满足要求了,例如pdf中左侧的目录的功能,就需要树形结构来实现。下面的这个应用就是基于pdf左侧的目录结构为原型写的,那首先贴上效果图:
这个的思路是:按照类似于“树”的结构组织数据,界面上直接利用大家经常用的listview实现的。下面这个是节点信息的类:
public class PDFOutlineElement {
private String id;//当前节点的id
private String outlineTitle ;//节点上面显示的信息
private boolean mhasParent ; //是否有父节点
private boolean mhasChild ;//是否有孩子节点
private String parent;//父节点的id
private int level;//当前节点所在的层次
}
在这里我想解释一下这个level,是很关键的,他表示的是当前节点所在的层次,不要小看他,正是他帮助我们在界面上显示出来了层次效果,其实这个树形结构并不是树形结构,所有的数据都维护在一个ArrayList里面,某一个节点A下面有子节点B、C,其实A、B、C这三个节点在ArrayList里面是顺序存放的,如果A的层次是level,那个他的子节点的层次是level+1,我们在getView()的时候我们可以不借助系统自动给我们画上,而是可以自己指定他的位置holder.icon.setPadding(25 * (level + 1), holder.icon.getPaddingTop(), 0, holder.icon.getPaddingBottom());,这样他的子节点便具有了缩进的效果。
还有比较关键的点是如何实现“展开”和 “缩回”的效果,其实这个只不过 是当单击摸个节点的时候,如果这个节点下面有子节点而且是“缩回”的,就把他的所有的子节点都从那个ArrayList里面删除调,然后 notifyDataSetChanged(),同理就是“展开”的时候,就是在这个节点后面添加子节点到ArrayList里面,然后 notifyDataSetChanged()。
其实说到这里大家应该知道怎么做了,这个树形结构不是真树,而就是一个ListView,通过往ArryList里面添加删除数据控制信息,通过setPadding()实现缩进
明白了这个思路,我把getView解释一下,大家肯定能做出来
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.outline, 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();
}
int level = mfilelist.get(position).getLevel();//每次根据节点的层次绘制显示的位置
holder.icon.setPadding(25 * (level + 1), holder.icon
.getPaddingTop(), 0, holder.icon.getPaddingBottom());
holder.icon.setVisibility(View.VISIBLE);
holder.text.setText(mfilelist.get(position).getOutlineTitle());
//如果有孩子而且当前是不是展开的图标设置为“+”号的图标
if (mfilelist.get(position).isMhasChild()
&& (mfilelist.get(position).isExpanded() == false)) {
holder.icon.setImageBitmap(mIconCollapse);
} else if (mfilelist.get(position).isMhasChild()
&& (mfilelist.get(position).isExpanded() == true)) {
//如果有孩子而且当前是不是展开的图标设置为“+”号的图标
holder.icon.setImageBitmap(mIconExpand);
} else if (!mfilelist.get(position).isMhasChild()){
holder.icon.setImageBitmap(mIconCollapse);
holder.icon.setVisibility(View.INVISIBLE);//这里不要设置为GONE,因为GONE不显示而且不占位置的,而INVISIBLE是不显示但是占位置的
}
return convertView;
}
下面是程序的源码下载地址:
http://download.csdn.net/source/3013850
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/GaoMatrix/archive/2011/02/08/6174915.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/GaoMatrix/archive/2011/02/08/6174915.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/GaoMatrix/archive/2011/02/08/6174915.aspx
发表评论
-
Android开发之ListView 适配器(Adapter)优化
2011-05-14 15:56 997ListView的Adapter的作用如下图所示: Adap ... -
Android软键盘学习InputMethodManager
2011-05-14 11:14 4028当我们在Android提供的EditText中单击的时候,会自 ... -
Android WakeLock
2011-05-12 22:50 1395在Android中,申请WakeLock可以让你的进程持续执行 ... -
Android中的Handler使用总结
2011-04-21 16:37 671在Android的UI开发中,我们经常会使用Handler来控 ... -
Android多线程及异步处理问题 【转载】
2011-04-17 23:53 19901、问题提出 1)为何需要多线程? 2)多线程如何实现? 3) ... -
EditText的属性说明
2011-04-14 11:47 889EditText的属性很多,这 ... -
Android 系统自带的图片
2011-04-14 11:43 1279This is a list of resources in ... -
Android Check GPS is Enabled or Not
2011-04-13 21:21 0在 Android 中, 我们可以使用 LocationMan ... -
Android ListView with Searchbox Sort items
2011-04-13 16:11 0这里我们有一个搜索框, 当它里面的内容与列表项匹配时... ... -
Android ListView Multiple Choice Example
2011-04-13 14:28 0在 Andoird 中 ListView 通常用来显示一个列表 ... -
TextView 不用 ScrollViewe 也可以滚动
2011-04-12 16:13 1020具体步骤: 第一步: xml 文件 <Text ... -
Activity...
2011-04-10 17:03 1077一、常用类: 1. Activity 是最基本的类,它 ... -
Android2.1中的 drawable(hdpi,ldpi,mdpi) 的区别
2011-03-24 21:37 941在之前的版本中,只有一个drawable,而2.1版本中有dr ... -
ADB常用命令
2011-03-24 21:36 953ADB(Android Debug Bridge)是A ... -
在任意位置获取应用程序Context
2011-03-24 21:35 1681在 Android 程序中访问资源时需要提供 Cont ... -
如何控制Android不锁屏
2011-03-22 14:51 2065锁定屏幕对于移动终端来说是非常有必要的,但是对于机顶盒产品 ... -
android Toast大全(五种情形)建立属于你自己的Toast
2011-03-19 18:26 876Toast用于向用户显示一些帮助/提示。下面我做了5中效果, ... -
Android简单数据存储类SharedPreferences详解及实例(通过“记住密码”功能学习SharedPreferences)
2011-03-19 18:23 4131SharedPreferences是Android中存储简单数 ...
相关推荐
在Android开发中,TreeView是一种可定制化的控件,它允许我们以树形结构展示数据,类似于桌面操作系统中的文件系统视图。本实例源码是基于Android Studio的一个项目,旨在帮助开发者理解和实现TreeView在Android应用...
在Android应用开发中,UI设计是至关重要的,而树形视图(TreeView)是一种常见的数据结构展示方式,尤其适用于层次关系复杂的数据展示。本篇将深入探讨“Android-TreeView”库,一个专为Android设计的高性能、功能...
在给定的“android stutio treeview Demo”项目中,我们关注的重点是如何利用TreeView控件创建一个三层树型结构。下面将详细解释这个知识点。 1. **TreeView控件**: TreeView是Android中用于展示层次化数据的控件...
`AndroidTreeView`是一个开源项目,它允许开发者轻松地在Android应用中实现树形视图,提供了丰富的定制选项和良好的用户体验。 `AndroidTreeView`的主要功能包括: 1. **动态加载**:可以处理大量数据,通过懒加载...
在Android开发中,为了呈现层次化的数据,开发者有时会需要实现类似于Windows操作系统的TreeView效果。TreeView是一种用户界面组件,它可以展示具有多级结构的数据,让用户能够以折叠/展开的方式查看和交互。在...
在Android开发中,TreeView是一种可用来展示层次结构数据的视图组件,类似于常见的文件系统目录结构。虽然Android SDK并未直接提供TreeView,但开发者通常通过自定义控件或者使用第三方库来实现这一功能。本整理版将...
4. **动画效果**:在展开和折叠节点时,AndroidTreeView支持动画效果,使用户体验更加流畅。开发者可以通过配置动画时长和类型来调整视觉效果。 5. **数据绑定**:可以与各种数据模型绑定,如ArrayList、List或者...
实现方式 用两个树形节点类集合分别去存储所有节点(List<TreeElement> treeElements) 和当前显示节点(List<TreeElement> currentElements),当前显示节点集合 currentElements中的数据显示在ListView中。...
【描述】"原来是githup上面的项目,转成eclipse上面运行" 表明该资源来源于GitHub,原始版本可能适用于Android Studio,但通过开发者或社区的努力,已将其转换为适应Eclipse IDE的格式。这对于那些还在使用Eclipse...
在Android开发中,`TreeView`是一种常见的数据展示控件,尤其适用于层次结构的数据。虽然Android SDK本身并未提供原生的`TreeView`,但开发者通常会通过自定义`ListView`或`RecyclerView`来模拟实现。本教程将深入...
在Android开发中,`TreeView`通常用于展示具有层级关系的数据,比如文件系统、组织结构等。虽然Android SDK本身并未提供内置的`TreeView`组件,但开发者可以通过自定义控件或者第三方库来实现这一功能。本示例中的...
【标题】:Eclipse版本AndroidTreeView详解 在Android开发中,ListView、RecyclerView等控件是常用的展示数据列表的组件,但它们在展示层次结构的数据时可能会显得力不从心。这时,我们可以借助第三方库来实现树形...
在Android开发中,`TreeView`是一种常见的用户界面组件,它以树形结构展示数据,使得层级关系清晰,便于用户浏览和操作。虽然Android SDK并没有直接提供内置的`TreeView`控件,但开发者可以通过第三方库或者自定义...
在Android开发中,`TreeView`是一种常见的用于展示多层级数据的控件,它能够以树状结构显示数据,用户可以通过展开或折叠节点来查看不同层级的信息。`ListView`虽然广泛用于展示单一列表,但并不适合处理层级关系...
在Android开发中,TreeView是一种可用来展示层次结构数据的视图控件,它将复杂的层级关系以树状的形式展现,方便用户浏览和操作。在实际应用中,TreeView常用于文件系统、目录结构或者菜单的展示。这篇教程将详细...
本项目"expandlistview多层展开Android-TreeView-原版"旨在实现多层展开的功能,通过嵌套`ExpandableListView`来达到这一目标。 `ExpandableListView`是Android SDK提供的一种可扩展的列表视图,它不仅支持单个条目...
而jQuery的TreeView插件则是用于创建可交互的树形视图,这在展示层级结构数据或者构建导航菜单时十分实用。下面我们将深入探讨jQuery Treeview的基本概念、实现原理以及使用方法。 首先,jQuery Treeview是一个插件...
在Android中,我们通常通过`ExpandableListView`或`RecyclerView`配合自定义适配器来模拟`TreeView`的效果。 1. **创建数据模型** 在实现`TreeView`之前,需要先定义数据结构。对于三级菜单,我们可以创建三个类:...