1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android 仿QQ好友列表功能实现

Android 仿QQ好友列表功能实现

时间:2023-10-30 19:15:11

相关推荐

Android 仿QQ好友列表功能实现

ExpandableListview

在垂直滚动展示两级列表的的视图。这与ListView不同,它有组对象和子对象,通过点击组对象来单制度展开子对象的内容,它的适配器跟普通的ListView不一样,需要继承BaseExpandableListAdapter ,都是用来给View提供数据,展示布局。

ExpandableListView是Android中可以实现下拉ListView的一个控件,是ListView的子类。

老规矩,先来看下效果图:

就是这么 一个效果,有兴趣的话就往下看把

1.先来看下布局,没有添加任何属性

<ExpandableListView android:id="@+id/mElistview"android:layout_width="match_parent"android:layout_height="wrap_content"/>

2.随便模拟了几个数据

public String[] titleStrings = {"女朋友", "女神", "基友", "小弟"};public String[][] nameStrings = {{"苍井空", "波多野结衣", "小泽玛莉亚", "龙泽罗拉"},{"鹿晗", "李易峰", "吴亦凡", "王俊凯"},{"张先生", "刘先生", "李先生", "杜先生", "小弟弟"},{"奥巴驴", "小学僧", "儿童劫", "托儿索"}};

3.初始化数据源

/*** 初始化数据源*/private void initList() {List<TitleInfo> mList = new ArrayList<>();for (int i = 0; i < titleStrings.length; i++) {//创建组对象TitleInfo info= new TitleInfo();//循环添加组的标题名info.setTitle(titleStrings[i]);//创建子对象数据源List<ContentInfo> list = new ArrayList<>();for (int j = 0; j < nameStrings.length; j++) {//创建子对象ContentInfo info2 = new ContentInfo();//添加用户名或者头像info2.setName(nameStrings[i][j]);//将子对象添加到数据源list.add(info2);}//将子对象数据源复制给组对象info.setInfo(list);//将组对象添加到总数据源中mList.add(info);}}

4.因为这是一个二级列表,所以它需要一个组对象的Bean和子对象的Bean,简洁说下参数

TitleInfo:private String title;private List<ContentInfo> info;ContentInfo:public String name; //名称private String qianming;//签名private String icon; //头像

5.写一个适配器 extens BaseExpandableListAdapter,他会返回很多方法,我已经在代码中都注释了

6.适配器里面有两个xml文件,我把它们分为组布局和子布局

7.MainActivity设置适配器就可以展示基本的效果了

8.我模拟了当点击一个组对象关闭其他组对象列表的功能,在工具类EListViewUtils.java文件中,通过调用适配器中的onGroupExpanded()方法来获取点击组对象的位置

9.对于处理item的点击事件,还要设置监听器,常用的有这么几个类

setOnChildClickListenersetOnGroupClickListenersetOnGroupCollapseListenersetOnGroupExpandListener

通过方法我们就会知道功能分别是击子选项、单击分组项、分组合并、分组展开的监听器。

代码就不贴了,太多,我已经给每一行添加过注释

项目Github地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。