- 浏览: 599347 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (154)
- java (31)
- Struts (3)
- Hibernate (8)
- Spring (6)
- JS (14)
- DWR (1)
- Oracle (1)
- SQL Server (0)
- JSF (0)
- JPA (0)
- Grails (3)
- Ajax (1)
- Extjs (0)
- jQuery (4)
- MySQL (2)
- 正则表达式 (2)
- 其他 (6)
- 计算机应用 (7)
- Groovy (8)
- Google (1)
- Web (2)
- MongoDB Java Driver (1)
- mongodb (1)
- Linux (3)
- HTML (1)
- Tomcat (3)
- Eclipse (2)
- JSP (1)
- 缓存 (1)
- 动态 (1)
- 问题与解决 (3)
- HY (1)
- Android (35)
- LBS (1)
最新评论
-
u012136165:
list 方法:纠正:[2,5].add(1,9) ...
Groovy的list和map -
bruce.yuan:
误人子弟的文章。已经看到N个人转了这个帖子,这要贻害多少新人啊 ...
理解并解决GBK转UTF-8奇数中文乱码 -
思念-悲伤:
特意登录上来,感谢下!
理解String的compareTo()方法返回值 -
bo_hai:
总结的好,有效。
理解String的compareTo()方法返回值 -
u012678420:
在onCreate方法中获取某个View的宽度和高度
效果图
Group右边的图标是Android系统自动加上的默认图标
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ExpandableListView android:id="@+id/expandable_list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
package com.improve; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.Toast; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.TextView; /** * ExpandableListView只能是两级层次 * @author Davee */ public class ExpandableListViewDemo extends Activity { private List<String> groupData; private List<List<String>> childrenData; private void loadData() { groupData = new ArrayList<String>(); groupData.add("Group 1"); groupData.add("Group 2"); groupData.add("Group 3"); childrenData = new ArrayList<List<String>>(); List<String> sub1 = new ArrayList<String>(); sub1.add("G1 Item 1"); sub1.add("G1 Item 2"); childrenData.add(sub1); List<String> sub2 = new ArrayList<String>(); sub2.add("G2 Item 1"); sub2.add("G2 Item 2"); sub2.add("G2 Item 3"); sub2.add("G2 Item 4"); childrenData.add(sub2); List<String> sub3 = new ArrayList<String>(); sub3.add("G3 Item 1"); sub3.add("G3 Item 2"); sub3.add("G3 Item 3"); sub3.add("G3 Item 4"); sub3.add("G3 Item 5"); childrenData.add(sub3); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.expandable_list_view); loadData(); ExpandableListView expandableListView = (ExpandableListView)findViewById(R.id.expandable_list_view); expandableListView.setAdapter(new ExpandableAdapter()); expandableListView.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View clickedView, int groupPosition, long groupId) { showMessage("点击Group: " + ((TextView)clickedView).getText()); return false;//返回true表示此事件在此被处理了 } }); expandableListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView expandablelistview, View clickedView, int groupPosition, int childPosition, long childId) { showMessage("点击Child: " + ((TextView)clickedView).getText()); return false;//返回true表示此事件在此被处理了 } }); expandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { showMessage("合拢Group: " + (groupPosition + 1)); } }); expandableListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { showMessage("展开Group: " + (groupPosition + 1)); } }); } private class ExpandableAdapter extends BaseExpandableListAdapter { @Override public Object getChild(int groupPosition, int childPosition) { return childrenData.get(groupPosition).get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { return 0; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView text = null; if (convertView != null) { text = (TextView)convertView; text.setText(childrenData.get(groupPosition).get(childPosition)); } else { text = createView(childrenData.get(groupPosition).get(childPosition)); } return text; } @Override public int getChildrenCount(int groupPosition) { return childrenData.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { return groupData.get(groupPosition); } @Override public int getGroupCount() { return groupData.size(); } @Override public long getGroupId(int groupPosition) { return 0; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView text = null; if (convertView != null) { text = (TextView)convertView; text.setText(groupData.get(groupPosition)); } else { text = createView(groupData.get(groupPosition)); } return text; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } private TextView createView(String content) { AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 38); TextView text = new TextView(ExpandableListViewDemo.this); text.setLayoutParams(layoutParams); text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); text.setPadding(40, 0, 0, 0); text.setText(content); return text; } } private void showMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } }
在上面效果图中,图标是系统自动加上的,也可以定义自己的图标
效果图
增加drawable文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_expanded="true" android:drawable="@drawable/narrow_expand" /> <item android:drawable="@drawable/narrow_unexpand" /> </selector>
修改布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ExpandableListView android:id="@+id/expandable_list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:groupIndicator="@drawable/group_icon_selector" /> </LinearLayout>
评论
4 楼
Jacarri_Chan
2012-09-21
赞一个赞一个
3 楼
zw_lovec
2012-07-06

2 楼
昔雪似花
2011-12-08
昔雪似花 写道

1 楼
昔雪似花
2011-12-08

发表评论
-
深入分析AIDL原理
2011-11-13 16:14 25439在上一篇文章(Service使用方式)中,介绍了Android ... -
Service使用方式
2011-11-13 15:23 6073使用Service的场合: ... -
在onCreate方法中获取某个View的宽度和高度
2011-10-08 14:54 14503有时候需要在onCreate方法中知道某个View组件的宽度和 ... -
不加载图片,仅仅获取图片文件分辨率
2011-10-08 11:09 3999当从SD卡中获取图片时,如果图片太大,加载会出现溢出异常。因此 ... -
图片移动和缩放
2011-09-29 22:15 2154import android.graphics.Matr ... -
定时任务
2011-09-28 00:53 1533定时任务有执行一次和重复执行两种 public cla ... -
几种创建LayoutInflater对象的方法
2011-09-28 00:51 1903LayoutInflater layoutInflate ... -
判断网络类型及是否有网络
2011-09-28 00:49 2809判断当前是否有可用网络 public boolean ... -
设置全屏
2011-09-26 23:40 19451.编程方式 public void setFullS ... -
dip与px单位之间转换
2011-09-25 10:11 1663//转换dip为px public static in ... -
屏幕尺寸(高、宽)
2011-09-25 10:11 1921Display display = getWindowM ... -
判断手机外存(SD卡)状态
2011-09-25 10:07 2178public int getExternalStorag ... -
SQLite数据类型
2011-09-25 10:03 9371一般数据采用的固 ... -
使用WebView实现腾讯微博OAuth登录
2011-09-24 21:11 4905接着上一篇文章"使用WebView实现新浪微博OAu ... -
使用WebView实现新浪微博OAuth登录
2011-09-20 12:18 8522#新浪官方下载SDK(weibo4android) h ... -
高效率下载图片——防止内存溢出
2011-09-18 13:09 2245在应用中经常需要下载很多的图片,因此,写好图片下载部分的代码非 ... -
PopupWindow使用
2011-09-16 14:05 1841使用PopupWindow来显示一个浮层 点击按钮后弹出 ... -
Android通知
2011-09-07 17:56 1941private void showNotification() ... -
AlarmManager.RTC和ELAPSED_REALTIME的区别
2011-09-04 17:33 30077AlarmManager.RTC,硬件闹钟,不唤醒手机( ... -
开机自启动
2011-09-04 13:55 1660经常会有这样的需求,当手机开机后立刻启动一个服务或者一个活动。 ...
相关推荐
本示例“Android使用ExpandableListview实现时间轴TimeLineDemo”就是基于`ExpandableListView`来创建一个可展开的时间轴效果。 首先,我们要理解`ExpandableListView`的基本工作原理。它允许每个列表项(group)都...
在"Android开发丶教你使用ExpandableListView一步步从零实现商城购物车(含demo超详细)"中,开发者将指导我们如何利用`ExpandableListView`来创建一个完整的购物车系统。 首先,我们需要理解`ExpandableListView`...
下面将详细介绍如何在Android中使用`ExpandableListView`创建一个时间轴。 首先,我们需要理解`ExpandableListView`的基本概念。它由两部分组成:父项(Group)和子项(Child)。父项代表一级分类,可以展开或折叠...
首先,我们来详细解释`ExpandableListView`的使用。`ExpandableListView`继承自`ListView`,它提供了扩展的功能,使得每个列表项可以展开显示子列表项。要使用`ExpandableListView`,开发者需要创建一个`...
在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何创建并操作一个支持三级菜单的`ExpandableListView`。 首先,`ExpandableListView`是`ListView`的扩展,它提供了更丰富的功能,可以...
下面我们来详细介绍如何使用ExpandableListView实现二级列表购物车。 首先,我们需要在布局文件中添加ExpandableListView组件,例如: ```xml <ExpandableListView android:id="@+id/elv" android:layout_width...
我们可以通过自定义布局文件和使用`setGroupIndicator()`方法来改变展开/折叠指示器的外观,还可以通过设置背景颜色、文字样式等方式调整整体视觉效果。 通过以上步骤,我们可以创建一个四级树形目录的`...
Android 中使用ExpandableListView 实现分组 一个视图显示垂直滚动两级列表中的条目。这不同于列表视图,允许两个层次,类似于QQ的好友分组。要实现这个效果的整体思路为: 1.要给ExpandableListView 设置适配器,...
ExpandableListView使用了Adapter的视图复用机制来提高性能,当一个条目滚动出屏幕再滚动回来时,它的背景可能会被错误地设置为之前显示的条目的颜色。为了解决这个问题,我们需要在getView()方法中正确地设置每个...
本篇文章将深入探讨如何使用ExpandableListView,以及如何实现数据的添加和更新。 一、ExpandableListView的基本概念 ExpandableListView是ListView的一个扩展,它能够显示一个可展开/折叠的列表,每个列表项可以...
本篇文章将详细探讨如何在Android中使用ExpandableListView进行动态添加和删除操作,以及实现ListView的选择和删除功能。 首先,我们来看ExpandableListView。它是一种特殊的ListView,允许每个条目展开显示子条目...
本文将深入探讨如何利用ExpandableListView控件实现这种效果。ExpandableListView是Android SDK提供的一种可扩展的列表视图,允许用户折叠和展开各个组,每个组下可以包含多个子项,非常适合用来构建层次结构清晰的...
在本教程中,我们将深入探讨如何在浏览器应用中有效地使用`ExpandableListView`。 ### 一、ExpandableListView基本概念 `ExpandableListView`是`ListView`的扩展,增加了可折叠和展开的特性。它分为两个主要部分:...
以上就是使用ExpandableListView实现QQ好友分组功能的基本步骤。通过这个控件,我们可以构建出层次清晰、易于操作的列表界面,让用户体验更佳。在实际开发中,还可以根据项目需求进行定制,比如添加头像、显示更多...
本教程将深入探讨如何在Android应用中使用ExpandableListView,以及如何实现其核心功能。 首先,了解ExpandableListView的基本结构。这个控件由两层数据构成:父组(Group)和子项(Child)。每个父组可以包含多个...
然而,如果在每个组内需要展示多列数据,单纯使用ExpandableListView可能无法满足需求,这时我们可以考虑将GridView嵌套在ExpandableListView的每个子项中,以实现更加复杂和灵活的布局。下面将详细解释如何实现“可...
在使用ExpandableListView时,我们需要定义两个类:一个表示父项,一个表示子项。通常,父项类会包含一个子项列表,用于存储对应的子项对象。例如,我们可以创建一个`Group`类来代表父项,一个`Child`类来代表子项...
在这种情况下,自定义ListView内嵌GridView或者使用ExpandableListView是常见解决方案。这两种方法可以帮助我们构建具有层次感的列表,使得信息展示更加清晰、易懂。 首先,让我们了解一下ListView。ListView是...