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 前段时间在忙毕业设计, ...
随机推荐
- [HNOI2006]公路修建问题
题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 复制 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 3 ...
- [Tjoi2013]最长上升子序列
Description 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上升子序列长度是多少? Input 第一行一 ...
- 例10-7 uva10820(欧拉)
题意:输入n,要求满足1≤x,y≤n,且x,y互素的个数. 若输入2,则答案3为(1,1),(1,2),(2,1);所以欧拉函数求出所有数的phi值,除了1之外都加上phi值的2倍即可 通过推导: p ...
- [bzoj4824][Cqoi2017]老C的键盘
来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序在某种 ...
- MYSQL 二进制安装
系统环境:CentOs6.7 i386 Mysql版本:mysql-5.6.36 root登录linux cd pwd #/root/ wget http://mirrors.sohu.com/mys ...
- 初探nginx
nginx nginx是俄罗斯人写的轻量级http服务器,Nginx 以事件驱动的方式编写,有非常好的性能,同时也是一个非常高效的反向代理.负载均衡. Nginx 稳定性高,模块库丰富,配置灵活,系统 ...
- 简易js进度条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 操作系统中的几种调度算法(JAVA版)
import java.text.DecimalFormat; import java.util.Arrays; import java.util.Scanner; /* * 作者:Chensx102 ...
- swiper实现臭美app滑动效果
一.臭美app效果: 我的需求是这样,上面正常滑动,点击下面的小卡牌,上面的滑动区也随之切换到当前的点击态. 二.实现: css: 主要设置可见区域的几张卡牌的位置,注意的几个位置是,中间的激活态和左 ...
- RabbitMQ用户管理
rabbitmq常用命令 add_user <UserName> <Password> delete_user <UserName> chan ...