展会信息港展会大全

Android开发--浅谈ExpandableListActivity
来源:互联网   发布日期:2016-01-14 10:46:09   浏览:2133次  

导读: ExpandableListActivity使用使用方法(可以和ListActivity进行对比)创建一个Activity类继承ExpandableListActvity三个layo...

ExpandableListActivity使用

使用方法(可以和ListActivity进行对比)

创建一个Activity类继承ExpandableListActvity

三个layout

主布局 (注意这里2个id都是android内置的 不是+id)

包含<ExpandableListView> 注意其中android:id="@id/android:list" 还有一个android:drawSelectorOnTop="false"(选中时是否遮盖文字)

<TextView android:id="@id/android:empty"> 当无数据时

一级目录布局

二级目录布局(条目item样式)

创建Adapter

将simpleExpandableListAdapter对象设置给当前ExpandableListActivity

setListAdapter(adapter);

SimpleExpandableListAdapter使用

为ExpandableListActivity提供数据

//定义List 为一级条目提供数据

List<Map<String, String>> groups=new ArrayList<Map<String, String>>();

需要几个条目 生成几个Map对象

Map<String, String> m1=new HashMap<String, String>();

m1.put(group,Group1);

m2.put(group,Group2);

groups.add(m1);

groups.add(m2);

//定义List 设置二级子条目 一个子条目一个List 一个项 一个Map

方法同上 建List(child1 child2)和Map(child:child1Data1;child:child1Data2)

//定义一个List 存储所有二级条目数据

*List<List<Map<String, String>>> childs = new ArrayListM<List<Map<String, String>>>();

childs.add(child1);

childs.add(child2);

//生成一个SimpleExpandableListAdapter对象

new SimpleExpandableListAdapter(...);

参数包括www.2cto.com

(context上下文对象,一级条目List对象,一级条目布局,

new String[]{"groups"})指定一级条目数据的key,new int[]{R.id.groupTo}指定一级条目数据显示的控件id,

二级条目的数据childs,二级条目布局,二级条目数据key(child),二级条目控件id}

下图是实现的截图:

这个实例用到三个布局文件:

第一个布局文件---主框架布局:

[html]

<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/android:list"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:drawSelectorOnTop="false"/>

<TextView android:id="@id/android:empty"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:text="No data"/>

</LinearLayout>

第二个布局文件---组布局:

[html]

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/group"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="60px"

android:paddingTop="10px"

android:paddingBottom="10px"

android:textSize="26sp"

android:text="No data"/>

</LinearLayout>

第三个布局文件---子视图布局:

[html]

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/child"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="50px"

android:paddingTop="5px"

android:paddingBottom="5px"

android:textSize="20sp"

android:text="No data"/>

</LinearLayout>

具体的实现代码如下:

[java]

public class ExpandableListActivity_Activity extends ExpandableListActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_expandable_list_activity_);

//定义一个List,这个List为一级条目提供数据

List<Map<String, String>> group=new ArrayList<Map<String,String>>();

Map<String, String> group1=new HashMap<String, String>();

group1.put("group", "group1");

Map<String, String> group2=new HashMap<String, String>();

group2.put("group", "group2");

group.add(group1);

group.add(group2);

//定义一个List,这个List为第一个一级条目提供二级条目数据

List<Map<String, String>> child1=new ArrayList<Map<String,String>>();

Map<String, String> child1Data1=new HashMap<String, String>();

child1Data1.put("child", "child1Data1");

Map<String, String> child1Data2=new HashMap<String, String>();

child1Data2.put("child", "child1Data2");

child1.add(child1Data1);

child1.add(child1Data2);

//定义一个List,这个List为第二个一级条目提供二级条目数据

List<Map<String, String>> child2=new ArrayList<Map<String,String>>();

Map<String, String> child2Data1=new HashMap<String, String>();

child2Data1.put("child", "child2Data1");

Map<String, String> child2Data2=new HashMap<String, String>();

child2Data2.put("child", "child2Data2");

child2.add(child2Data1);

child2.add(child2Data2);

//定义一个List,这个List存储所有的二级条目数据

List<List<Map<String, String>>> childs=new ArrayList<List<Map<String,String>>>();

childs.add(child1);

childs.add(child2);

//生成一个SimpleExpandableListAdapter对象

/*

* 1.context

* 2.一级条目的数据

* 3.用来设置一级条目样式的布局文件

* 4.指定一级条目数据的key

* 5.指定一级条目数据显示控件的id

* 6.指定二级条目的数据

* 7.设置二级条目样式的布局文件

* 8.指定二级条目数据的key

* 9.指定二级条目数据显示控件的id

*/

SimpleExpandableListAdapter selaListActivity=new SimpleExpandableListAdapter

(this, group, R.layout.group, new String[]{"group"},

new int[]{R.id.group}, childs,R.layout.child,

new String[] {"child"}, new int[]{R.id.child});

setListAdapter(selaListActivity);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_expandable_list_activity_,

menu);

return true;

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港