仿qq联系人 学习笔记---ExpandableListActivity的使用

【转】原地址  http://blog.163.com/[email protected]/blog/static/237809502011102010100331/

效果显示图:

1.布局文件

main.xml(ExpandableListActivity布局文件)

注意事项:

ExpandableListActivity的布局文件中必须包含一个ExpandableListView,并且id必须为="@id/android:list"。还可以包含一个id为empty的TextView,在ExpandableListActivity中没有数据的时候显示该控件的text值。

 1  <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
 2     android:orientation="vertical"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent">
 5     <ExpandableListView android:id="@id/android:list"
 6         android:layout_width="fill_parent"
 7         android:layout_height="fill_parent"
 8         android:drawSelectorOnTop="false">
 9         </ExpandableListView>
10     <TextView
11         android:id="@id/android:empty"
12         android:layout_width="fill_parent"
13         android:layout_height="fill_parent"
14         android:text="没有数据">
15         </TextView>
16 </LinearLayout>

group.xml(一级条目布局文件,样式外观可根据需要自由发挥)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3   xmlns:android="http://schemas.android.com/apk/res/android"
 4   android:orientation="vertical"
 5   android:layout_width="match_parent"
 6   android:layout_height="match_parent">
 7   <TextView android:id="@+id/groupTo"
 8      android:layout_width="fill_parent"
 9      android:layout_height="fill_parent"
10      android:paddingLeft="60dip"
11      android:paddingTop="10dip"
12      android:paddingBottom="10dip"
13      android:text="No Date"
14      android:textSize="20sp">
15   </TextView>
16 </LinearLayout>

child.xml(二级条目布局文件,样式外观可根据需要自由发挥)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3   xmlns:android="http://schemas.android.com/apk/res/android"
 4   android:orientation="vertical"
 5   android:layout_width="match_parent"
 6   android:layout_height="match_parent">
 7   <TextView android:id="@+id/childTo"
 8       android:layout_width="fill_parent"
 9       android:layout_height="fill_parent"
10       android:paddingLeft="50dip"
11       android:paddingTop="5dip"
12       android:paddingBottom="5dip"
13       android:textSize="20sp"
14       android:text="No Date">
15   </TextView>
16 </LinearLayout>

2.JAVA代码

 1 package com.test;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 import android.app.ExpandableListActivity;
 8 import android.os.Bundle;
 9 import android.widget.SimpleExpandableListAdapter;
10 public class Sample_ExpandableListActivityActivity extends ExpandableListActivity {
11     @Override
12     public void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.main);
15         //一级条目
16         List<Map<String, String>>groups=new ArrayList<Map<String,String>>();
17         Map<String, String> group1=new HashMap<String, String>();
18         group1.put("group","第一组");
19         Map<String, String> group2=new HashMap<String, String>();
20         group2.put("group", "第二组");
21         groups.add(group1);
22         groups.add(group2);
23         //二组条目
24         List<List<Map<String, String>>> childs=new ArrayList<List<Map<String,String>>>();
25         //第一组二级科目数据
26         List<Map<String, String>> child1=new ArrayList<Map<String,String>>();
27         Map<String, String> item1=new HashMap<String, String>();
28         item1.put("child","科目-1");
29         Map<String, String> item2=new HashMap<String, String>();
30         item2.put("child","科目-2");
31         child1.add(item1);
32         child1.add(item2);
33         //第二组二级科目数据
34         List<Map<String, String>> child2=new ArrayList<Map<String,String>>();
35         Map<String, String> item3=new HashMap<String, String>();
36         item3.put("child","科目-3");
37         Map<String, String> item4=new HashMap<String, String>();
38         item4.put("child","科目-4");
39         Map<String, String> item5=new HashMap<String, String>();
40         item5.put("child","科目-5");
41         child2.add(item3);
42         child2.add(item4);
43         child2.add(item5);
44         childs.add(child1);
45         childs.add(child2);
46         //SimpleExpandableListAdapter构造函数参数
47         //1.content
48         //2.一级条目数据
49         //3.一级条目布局文件
50         //4.一级条目Key
51         //5.一级条目显示信息控件id
52         //6.二级条目数据
53         //7.二级条目布局文件
54         //8.二级条目Key
55         //9.二级条目显示信息控件id
56         SimpleExpandableListAdapter adapter=new SimpleExpandableListAdapter(this,groups,R.layout.group,
57         new String[]{"group"},new int[]{R.id.groupTo}, childs, R.layout.child, new String[]{"child"},
58         new int[]{R.id.childTo});
59         setListAdapter(adapter);
60
61     }
62 }
时间: 2024-10-11 00:53:49

仿qq联系人 学习笔记---ExpandableListActivity的使用的相关文章

动手分析安卓仿QQ联系人列表TreeView控件

因项目需要需要用到仿QQ联系人列表的控件样式,于是网上找到一个轮子(https://github.com/TealerProg/TreeView),工作完成现在简单分析一下这个源码.   一. 需要用到的知识如下: ①安卓事件分发机制:(http://blog.csdn.net/lvxiangan/article/details/9309927  或 http://gundumw100.iteye.com/blog/1052270) ②安卓View绘制:http://blog.csdn.net/

IOS总结_可收缩分组表格(仿QQ联系人界面)

#import "yxpGroupTBVC.h" #define  DIC_EXPANDED @"expanded" //是否是展开 0收缩 1展开 #define  DIC_ARARRY @"array" #define  DIC_TITILESTRING @"title" #define  CELL_HEIGHT 40.0f @interfaceyxpGroupTBVC ()<UITableViewDataSourc

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

韩顺平视频学习笔记-简易qq

1 package myclient; 2 3 import java.net.*; 4 import java.util.Date; 5 import java.text.SimpleDateFormat; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.io.*; 9 import java.awt.*; 10 11 import javax.swing.*;

Android学习之仿QQ側滑功能的实现

如今项目越来越多的应用了滑动删除的功能,Android本来遵循的是长按删除,IOS定制的是滑动删除,不可否认滑动删除确实在客户体验上要好一点,所以看了非常多关于仿QQ滑动删除的样例,还是感觉代码家的Android Swipe Layout要好一点,至于为何好,以下我给大家实验一下大家就知道了 老规矩.贴上效果图.这样大家才干更近距离的了解 这是代码家的效果图,效果非常多,支持listview.gridview,当然recylerview也是支持的. 可是呢,有个问题,代码家的效果非常多.可是我们

android学习笔记——使用QuickContactBadge关联联系人

本文大部分内容来自<疯狂android讲义>. QuickContactBadge继承了ImageView,因此它的本质也是图片,也可以通过android:src属性指定它显示的图片.QuickcontactBadge额外增加的功能是:该图片可以关联到手机中指定联系人,当用户单击该图片时,系统将会打开相应联系人的联系方式界面. 为了让QuickContactBadge与特定联系人关联,可以调用如下方法进行关联. assignContactFromEmail(String emailAddres

JS学习笔记--仿手机发送内容交互

学习JS笔记----记录上课中学习的知识点,分享下老师教的内容: 1.html内容 <div id="box"> <div id="message"> <!--<p class="left"> <img src="img/136.jpg" /> <span>这是第一句话</span> </p> <p class="righ

android 浮动窗口学习笔记及个人理解(仿360手机助手)

非常感谢原文作者 http://blog.csdn.net/guolin_blog/article/details/8689140 经自己理解 程序运行界面如下图: 1.程序入口界面 2.小浮动窗口 3.大浮动窗口 由上图可看出,可以看出我们基本需要: 1.一个主Activity 2.小浮动窗口view界面 3.大浮动窗口view界面 对于浮动窗口的管理我们还需要 4.一个Service(在后台监控管理浮动窗口的状态) 5.窗口管理类(创建/消除浮动窗口) 代码: package com.ww.

IOS UI学习 UITableView Demo 实现类似QQ联系人收起和展开效果

UItableView 日常学习总结 实现类似 QQ联系人收起和展开的效果 思路 就是 自定义Header 在它上面添加一个Button 或者一个点击手势 ,我是添加了一个手势 每一个分区设置一个状态为表示为收起和展开  (bool 型 即可) 当判断为收起时将分区 section的row数量设置为0,即不显示任何内容 当判断为展开时将分区 section的row数量设置为要显示的内容的数目 然后重载分区即可 重载分区方法 1 //重载分区 2 [_tableV reloadSections:[