ExpandableListView仿QQ好友列表
本例中,对ExpandableListView中的数据进行了封装,分为两个JavaBean,一个为Group类表示组信息,一个Child类表示该组下子列表信息:
Group:
public class Group {
private String groupName;//分组名
private List<Child> childList;//该分组写子列表
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public List<Child> getChildList() {
return childList;
}
public void setChildList(List<Child> childList) {
this.childList = childList;
}
}
Child:
public class Child implements Serializable{
private String username;//用户名
private String headphoto;//用户头像
private String mood;//心情
private String online_status;//在线状态
public String getMood() {
return mood;
}
public void setMood(String mood) {
this.mood = mood;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getOnline_status() {
return online_status;
}
public void setOnline_status(String online_status) {
this.online_status = online_status;
}
public String getHeadphoto() {
return headphoto;
}
public void setHeadphoto(String headphoto) {
this.headphoto = headphoto;
}
ExpandableListView则用到了一个开源控件:IphoneTreeView继承自ExpandableListView,很好的实现了类似QQ好友列表的展现形式,只是需要在样式上做些更改,上图:
本例中也实现了类似qq好友在线情如在线好友头像为亮色,非在线好友头像为暗色(设置透明度即可),以及在线好友占总好友数目比例(可根据Child中的在线状态属性设定,值为1表示在线,为0表示非在线),另外也实现了向上滑动时组别悬浮即停留在顶部的功能。使用时,只需要传入一个List<Group>即可,我在这里是模拟了一些数据,正常情况下当然要从服务端接收数据:
private void initData() {
listGroup=new ArrayList<Group>();
//第一组
Group group=new Group();
group.setGroupName("我的好友");
List<Child> listChild=new ArrayList<Child>();
for(int i=0;i<10;i++){
Child child=new Child();
child.setUsername("我的好友"+i);
child.setHeadphoto("http://d.hiphotos.baidu.com/zhidao/pic/item/562c11dfa9ec8a13e028c4c0f603918fa0ecc0e4.jpg");
child.setMood("今天心情不错哈~");
if(i<3)
child.setOnline_status("1");
else
child.setOnline_status("0");
listChild.add(child);
}
group.setChildList(listChild);
listGroup.add(group);
//第二组
group=new Group();
group.setGroupName("我的同学");
listChild=new ArrayList<Child>();
for(int i=0;i<20;i++){
Child child=new Child();
child.setUsername("我的同学"+i);
child.setHeadphoto("http://wenwen.soso.com/p/20090901/20090901120135-1666292770.jpg");
child.setMood("今天心情不错哈~");
if(i<3)
child.setOnline_status("1");
else
child.setOnline_status("0");
listChild.add(child);
}
group.setChildList(listChild);
listGroup.add(group);
//第三组
group=new Group();
group.setGroupName("我的朋友");
listChild=new ArrayList<Child>();
for(int i=0;i<30;i++){
Child child=new Child();
child.setUsername("我的朋友"+i);
child.setHeadphoto("http://img.xiaba.cvimage.cn/4d908de84538f31e2dbe0a00.jpg");
child.setMood("今天心情不错哈~");
if(i<4)
child.setOnline_status("1");
else
child.setOnline_status("0");
listChild.add(child);
}
group.setChildList(listChild);
listGroup.add(group);
mExpAdapter = new ConstactAdapter(this, listGroup, mIphoneTreeView);
mIphoneTreeView.setAdapter(mExpAdapter);
}
另外,加载头像使用的是开源控件afinal,对afinal不了解的可以查看前面的几篇博客中有介绍,好了,具体可以下载demo做详细研究:
下载地址:http://download.csdn.net/detail/baiyuliang2013/8640695
ExpandableListView仿QQ好友列表的更多相关文章
- 仿QQ好友列表界面的实现
TableView有2种style:UITableViewStylePlain 和 UITableViewStyleGrouped. 但是QQ好友列表的tableView给人的感觉似乎是2个style ...
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeaderExpandableListView.java 要注意的是 在 onGroupClick方法中pare ...
- android 实现QQ好友列表
在某些Android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的.接触Android,也才一年的时间,大部分时间花在工作上(解bug...),界面上开发很少参与.自己维护的系统应用 ...
- 动手分析安卓仿QQ联系人列表TreeView控件
因项目需要需要用到仿QQ联系人列表的控件样式,于是网上找到一个轮子(https://github.com/TealerProg/TreeView),工作完成现在简单分析一下这个源码. 一. 需要用 ...
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...
- [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView
A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组 code so ...
- WPF 自定义TreeView控件样式,仿QQ联系人列表
一.前言 TreeView控件在项目中使用比较频繁,普通的TreeView并不能满足我们的需求.因此我们需要滴对TreeView进行改造.下面的内容将介绍仿QQ联系人TreeView样式及TreeVi ...
- (二十七)QQ好友列表的实现
QQ好友列表通过plist读取,plist的结构为一组字典,每个字典内有本组的信息和另外一组字典代表好友. 要读取plist,选择合适的数据结构,例如NSArray,然后调用initWithConte ...
- 基于Qt的相似QQ好友列表抽屉效果的实现
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shuideyidi/article/details/30619167 前段时间在忙毕业设计, ...
随机推荐
- 栅栏(fence)
[问题描述]小 v 家有一条栅栏,由 n 个木板顺序组成,第 i 个木板的高度是 Ai.现在小镇上流行在栅栏上画矩形,所以小 v 也要在自家的栅栏上画.若要在区间[x,x+k-1]这个区间画一个宽度为 ...
- UVA11404:Palindromic Subsequence
回文子串dp,最小字典序的话需要记录一下,注意是string型的,不能只记录一个字符,因为可能出现相等的情况 #include<cstdio> #include<cstdlib> ...
- poj 2689 (素数二次筛选)
Sample Input 2 17 14 17 Sample Output 2,3 are closest, 7,11 are most distant. There are no adjacent ...
- bzoj1071[SCOI2007]组队
1071: [SCOI2007]组队 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2472 Solved: 792[Submit][Status][ ...
- hdu 5607 BestCoder Round #68 (矩阵快速幂)
graph Accepts: 9 Submissions: 61 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 ...
- Excel实现双击插入当前日期时间
用vba做一个事件驱动程序. 第一步:点击开发工具-visual basic. 第二步:在当前工作表中编制程序如下: Private Sub Worksheet_BeforeDoubleClick(B ...
- 以太坊MetaMask钱包插件简介
MetaMask是一个以太坊钱包插件,虽然只能在Chrome浏览器中使用,但作为以太坊钱包的metamask却很受以太坊开发者欢迎. MetaMask 评价(5★):安装设置:★★★★界面操作:★★★ ...
- jquery easyui panel title文字格式设置
$('#txtLeftPercent').panel({ title: '剩余权重:' + '<b style="color:red">' + 100 + '%< ...
- Mybatis自动生成实体类和实体映射工具
Mybatis Mysql生成实体类 用到的Lib包: mybatis-generator-core-1.3.2.jarmysql-connector-java-5.1.30.jar 1. 创建一个文 ...
- Linux下安装 mysql 5.7
安装环境:系统是 centos6.5 1.下载 下载地址:https://dev.mysql.com/downloads/file/?id=467556 下载版本:我这里选择的57.17,通用版,li ...