ExpandableListActivity:
An activity that displays an expandable list of items by binding to a data source implementing the ExpandableListAdapter, and exposes event handlers when the user selects an item.
即,可扩展的list,单击某个item后,又可显示一个子list。它的数据通过绑定到ExpandableListAdapter或者ExpandableListAdapter的子类上。
示例1—通过SimpelExpandableListAdapter绑定数据:
注意:android.R.layout.simple_expandable_list_item_1:表示只显示一个TextView的数据,即R.id.text1
android.R.layout.simple_expandable_list_item_2:表示显示二个TextView的数据,即R.id.text1,R.id,text2
android.R.layout.simple_expandable_list_item_2.xml(在R.layout中)文件的布局如下:
示例2—通过SimpleCussorTreeAdapter绑定数据:
示例3—通过BaseExpandableListAdapter绑定数据:
- publicclassExpandableList1extendsExpandableListActivity{
- ExpandableListAdaptermAdapter;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- mAdapter=newMyExpandableListAdapter();
- setListAdapter(mAdapter);
- registerForContextMenu(getExpandableListView());
- }
- @Override
- publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){
- menu.setHeaderTitle("Samplemenu");
- menu.add(0,0,0,R.string.expandable_list_sample_action);
- }
- @Override
- publicbooleanonContextItemSelected(MenuItemitem){
- ExpandableListContextMenuInfoinfo=(ExpandableListContextMenuInfo)item.getMenuInfo();
- Stringtitle=((TextView)info.targetView).getText().toString();
- inttype=ExpandableListView.getPackedPositionType(info.packedPosition);
- if(type==ExpandableListView.PACKED_POSITION_TYPE_CHILD){
- intgroupPos=ExpandableListView.getPackedPositionGroup(info.packedPosition);
- intchildPos=ExpandableListView.getPackedPositionChild(info.packedPosition);
- Toast.makeText(this,title+":Child"+childPos+"clickedingroup"+groupPos,
- Toast.LENGTH_SHORT).show();
- returntrue;
- }elseif(type==ExpandableListView.PACKED_POSITION_TYPE_GROUP){
- intgroupPos=ExpandableListView.getPackedPositionGroup(info.packedPosition);
- Toast.makeText(this,title+":Group"+groupPos+"clicked",Toast.LENGTH_SHORT).show();
- returntrue;
- }
- returnfalse;
- }
- publicclassMyExpandableListAdapterextendsBaseExpandableListAdapter{
- privateString[]groups={"PeopleNames","DogNames","CatNames","FishNames"};
- privateString[][]children={
- {"Arnold","Barry","Chuck","David"},
- {"Ace","Bandit","Cha-Cha","Deuce"},
- {"Fluffy","Snuggles"},
- {"Goldy","Bubbles"}
- };
- publicObjectgetChild(intgroupPosition,intchildPosition){
- returnchildren[groupPosition][childPosition];
- }
- publiclonggetChildId(intgroupPosition,intchildPosition){
- returnchildPosition;
- }
- publicintgetChildrenCount(intgroupPosition){
- returnchildren[groupPosition].length;
- }
- publicTextViewgetGenericView(){
- AbsListView.LayoutParamslp=newAbsListView.LayoutParams(
- ViewGroup.LayoutParams.FILL_PARENT,64);
- TextViewtextView=newTextView(ExpandableList1.this);
- textView.setLayoutParams(lp);
- textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
- textView.setPadding(36,0,0,0);
- returntextView;
- }
- publicViewgetChildView(intgroupPosition,intchildPosition,booleanisLastChild,
- ViewconvertView,ViewGroupparent){
- TextViewtextView=getGenericView();
- textView.setText(getChild(groupPosition,childPosition).toString());
- returntextView;
- }
- publicObjectgetGroup(intgroupPosition){
- returngroups[groupPosition];
- }
- publicintgetGroupCount(){
- returngroups.length;
- }
- publiclonggetGroupId(intgroupPosition){
- returngroupPosition;
- }
- publicViewgetGroupView(intgroupPosition,booleanisExpanded,ViewconvertView,
- ViewGroupparent){
- TextViewtextView=getGenericView();
- textView.setText(getGroup(groupPosition).toString());
- returntextView;
- }
- publicbooleanisChildSelectable(intgroupPosition,intchildPosition){
- returntrue;
- }
- publicbooleanhasStableIds(){
- returntrue;
- }
- }
- }
- publicclassExpandableList2extendsExpandableListActivity{
- privateintmGroupIdColumnIndex;
- privateStringmPhoneNumberProjection[]=newString[]{
- People.Phones._ID,People.Phones.NUMBER
- };
- privateExpandableListAdaptermAdapter;
- /*
- *CursorTreeAdapter'smethod.
- *GetstheCursorforthechildrenatthegivengroup
- */
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- CursorgroupCursor=managedQuery(People.CONTENT_URI,
- newString[]{People._ID,People.NAME},null,null,null);
- mGroupIdColumnIndex=groupCursor.getColumnIndexOrThrow(People._ID);
- mAdapter=newMyExpandableListAdapter(groupCursor,
- this,
- android.R.layout.simple_expandable_list_item_1,
- android.R.layout.simple_expandable_list_item_1,
- newString[]{People.NAME},
- newint[]{android.R.id.text1},
- newString[]{People.NUMBER},
- newint[]{android.R.id.text1});
- setListAdapter(mAdapter);
- }
- publicclassMyExpandableListAdapterextendsSimpleCursorTreeAdapter{
- publicMyExpandableListAdapter(Cursorcursor,Contextcontext,intgroupLayout,
- intchildLayout,String[]groupFrom,int[]groupTo,String[]childrenFrom,
- int[]childrenTo){
- super(context,cursor,groupLayout,groupFrom,groupTo,childLayout,childrenFrom,
- childrenTo);
- }
- @Override
- protectedCursorgetChildrenCursor(CursorgroupCursor){
- Uri.Builderbuilder=People.CONTENT_URI.buildUpon();
- ContentUris.appendId(builder,groupCursor.getLong(mGroupIdColumnIndex));
- builder.appendEncodedPath(People.Phones.CONTENT_DIRECTORY);
- UriphoneNumbersUri=builder.build();
- returnmanagedQuery(phoneNumbersUri,mPhoneNumberProjection,null,null,null);
- }
- }
- }
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <TextViewandroid:id="@+id/text1"
- android:textSize="16sp"
- android:textStyle="bold"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- <TextViewandroid:id="@+id/text2"
- android:textSize="16sp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- </LinearLayout>
- publicclassExpandableList3extendsExpandableListActivity{
- privatestaticfinalStringNAME="NAME";
- privatestaticfinalStringIS_EVEN="IS_EVEN";
- privateExpandableListAdaptermAdapter;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- List<Map<String,String>>groupData=newArrayList<Map<String,String>>();
- List<List<Map<String,String>>>childData=newArrayList<List<Map<String,String>>>();
- for(inti=0;i<20;i++){
- Map<String,String>curGroupMap=newHashMap<String,String>();
- groupData.add(curGroupMap);
- curGroupMap.put(NAME,"Group"+i);
- curGroupMap.put(IS_EVEN,(i%2==0)?"Thisgroupiseven":"Thisgroupisodd");
- List<Map<String,String>>children=newArrayList<Map<String,String>>();
- for(intj=0;j<15;j++){
- Map<String,String>curChildMap=newHashMap<String,String>();
- children.add(curChildMap);
- curChildMap.put(NAME,"Child"+j);
- curChildMap.put(IS_EVEN,(j%2==0)?"Thischildiseven":"Thischildisodd");
- }
- childData.add(children);
- }
- mAdapter=newSimpleExpandableListAdapter(
- this,
- groupData,
- android.R.layout.simple_expandable_list_item_2,
- newString[]{NAME,IS_EVEN},
- newint[]{android.R.id.text1,android.R.id.text2},
- childData,
- android.R.layout.simple_expandable_list_item_2,
- newString[]{NAME,IS_EVEN},
- newint[]{android.R.id.text1,android.R.id.text2}
- );
- setListAdapter(mAdapter);
- }
- }
分享到:
相关推荐
`ExpandableListActivity`是Android开发中的一个关键组件,它属于`ListView`的扩展,能够显示可折叠的子列表项,使得用户界面更加有层次感和交互性。在这个主题下,我们将深入探讨`ExpandableListActivity`的工作...
通过这个例子,开发者可以学习到如何在Android应用中使用`ExpandableListActivity`展示层次结构数据,并通过`Handler`实现动画效果。这在展示具有多级分类的数据时非常有用,例如日历应用的月份和日期、菜单的分类和...
本篇笔记将深入探讨如何使用ExpandableListView,以及如何用HashMap作为数据源。 首先,ExpandableListView的核心在于它的数据模型,它由两部分组成:Groups(父项)和Childrens(子项)。每个Group可以包含多个...
`ExpandableListActivity`是Android框架中用于显示层次结构数据的Activity。与传统的`ListActivity`不同,它能够展示多层级的数据,即可以有父项和子项的概念。用户可以通过点击父项来展开或折叠其子项列表,非常...
本笔记集合了"Mars Android视频教程"的主要知识点,旨在帮助学习者回顾和巩固课程中的核心概念。以下是根据文件名整理出的各章节内容详解: 1. **Animations.doc** - 动画是Android应用中提升用户体验的关键元素。...
### Android开发笔记知识点详解 #### 第1章 Android简介 **1.1 Android与iPhone** - **Android**: 是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板...
### Android 安卓笔记知识点详解 #### Android—基础 ##### 基础—概念 - **控件类之父**:`View`是所有控件的基类,无论是简单的按钮还是复杂的列表视图,都是从这个类派生出来的。 - **基准线**:在英文书写中,...
PreferenceActivity和ExpandableListActivity的使用,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77773001
* @see android.app.ExpandableListActivity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo) */ @Override public void onCreateContextMenu...
import android.app.ExpandableListActivity; import android.os.Bundle; public class MainActivity extends ExpandableListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super...
在Android中,我们可以使用`ExpandableListActivity`或者普通的`Activity`配合`ExpandableListView`进行布局。数据通常由`ExpandableListAdapter`管理,这个适配器需要实现`BaseExpandableListAdapter`接口。 在...
Android控件下拉框,单选按钮,复选框,自动补全,日期控件(支持显示格式:年月,年月日,月日),LauncherActivity的使用,ExpandableListActivity实现二级下拉列表,并且在列表项右边加自定义的图片,实现只展开一个菜单的功能...
`ExpandableListView`通常与`ExpandableListActivity`一起使用,就像`ListActivity`与`ListView`的关系一样。 首先,我们需要创建一个包含`ExpandableListView`的布局。在`main.xml`中,你可以看到以下代码: ```...
在我们的示例代码中,我们创建了一个 ActivityMain 类,该类继承自 ExpandableListActivity,并实现了 onCreate()、onCreateContextMenu() 和 onContextItemSelected() 等方法。这些方法负责初始化列表控件、创建上...
在Android应用开发中,`ExpandableListView`是一个非常有用的控件,它允许用户展示一个可折叠/展开的列表,这种列表通常用于显示层次结构的数据,如目录结构、菜单或者RSS阅读器中的文章分类。在这个例子中,我们...
在Android开发中,ExpandableListView是一个非常重要的控件,它允许用户展示数据集,并且以可...这不仅涉及到基本的UI布局,还涵盖了数据处理、事件监听和性能优化等多个方面,对于Android应用开发有着重要的学习价值。
在Android应用开发中,创建一个个人理财工具是一个实用且具有挑战性的任务。本文将探讨如何在这样的工具中实现添加账单页面,这是一个关键功能,允许用户记录他们的收入和支出。在这一部分,我们将关注界面设计、...
在Android开发中,`ExpandableListView` 是一个非常实用的控件,它可以显示具有扩展功能的列表,即每个条目可以展开以显示更多的子条目,通常用于构建具有层级结构的数据展示。本教程将深入讲解如何在Android应用中...
接下来是关键的Java代码,通常继承自`ExpandableListActivity`或者自定义的`BaseExpandableListAdapter`。这里,`ExpandActivity`类负责设置`ExpandableListView`的数据源和适配器。`onCreate`方法是初始化的关键点...
(2)第二种方法则是创建一个Activity继承自ExpandableListActivity,而后通过getExpandableListView()方法可获得一个ExpandableListView对象。 第二种方法仅适用于一个页面中只有一个ExpandableListView的情况。...