仿QQ好友列表 ExpandableListView

05.实例篇:仿QQ好友列表——ExpandableListView可扩展列表的使用(上篇) 1.qian ListView类控件在APP中经常使用,本文主要介绍ExpandableListView,完成两级列表显示的效果    这一节(上篇、下篇)主要介绍如何仿照QQ,以及ListView和ExpandableListView的主要知识点,实现一个好友列表(静态的数据,下一节介绍如何网络上动态获取数据); 2.实现效果如下:    实现要点:在于如何布局ChildView 阅读详情

仿QQ好友列表的效果图微笑


xml页面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <!--运用:如:QQ列表-->
    <ExpandableListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/expandablelistview_1"></ExpandableListView>

</LinearLayout>

Java代码

package com.example.app11;

import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Created by Administrator on 2017/6/8 0008.
 */

public class ExpandableListViewActivity extends AppCompatActivity {

    private ExpandableListView expandableListView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.expandablelistview);
        expandableListView = (ExpandableListView) findViewById(R.id.expandablelistview_1);
        expandable expandable=new expandable();
        expandableListView.setAdapter(expandable);

    }

    class expandable implements ExpandableListAdapter {

        int logals[] = {R.drawable.dog, R.drawable.elephant, R.drawable.fish};
        String names[] = {"狗", "象", "鱼"};
        String content[][] = {{"狗1", "狗2", "狗3"}, {"象1", "象2", "象3"}, {"鱼1", "鱼2", "鱼3"}};

        @Override
        public void registerDataSetObserver(DataSetObserver observer) {
        }

        @Override
        public void unregisterDataSetObserver(DataSetObserver observer) {

        }

        @Override
        public int getGroupCount() {
            return names.length;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            return content[groupPosition].length;
        }

        @Override
        public Object getGroup(int groupPosition) {
            return names[groupPosition];
        }

        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return content[groupPosition][childPosition];
        }

        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        @Override
        public boolean hasStableIds() {
            return true;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            LinearLayout ll = new LinearLayout(ExpandableListViewActivity.this);
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ImageView logo = new ImageView(ExpandableListViewActivity.this);
            logo.setImageResource(logals[groupPosition]);
            logo.setPadding(36, 15, 0, 0);
            ll.addView(logo);
            TextView textView=getTextView();
            textView.setText(getGroup(groupPosition).toString());
            textView.setPadding(10,0,0,0);
            ll.addView(textView);
            return ll;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

            TextView textView=getTextView();
            textView.setText(getChild(groupPosition,childPosition).toString());
            return textView;
        }

        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }

        @Override
        public boolean areAllItemsEnabled() {
            return false;
        }

        @Override
        public boolean isEmpty() {
            return false;
        }

        @Override
        public void onGroupExpanded(int groupPosition) {

        }

        @Override
        public void onGroupCollapsed(int groupPosition) {

        }

        @Override
        public long getCombinedChildId(long groupId, long childId) {
            return 0;
        }

        @Override
        public long getCombinedGroupId(long groupId) {
            return 0;
        }

        private TextView getTextView() {
            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
            TextView textView = new TextView(ExpandableListViewActivity.this);
            textView.setLayoutParams(lp);
            textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
            textView.setPadding(36, 0, 0, 0);
            textView.setTextSize(20);
            return textView;
        }

    }
}

仿QQ好友列表分组折叠效果 最近要一个类似QQ好友列表分组折叠效果,经过网友提醒应该使用ExpandableListView,因为其就集成了这个功能,我到网上随便找了文章一看,果然如此,因为工作需要和兴趣的推动,下班做完事后决定做一个小的demo,一来是为了更好地熟练记忆,二是如果能够帮助有需要的人更好! 先来一个简单的效果图,没错我们现在要做的就是这么简单,重在知识。 ![效果一](http://img.blog.csdn. 阅读详情

相关推荐

仿QQ面板的WinForm窗体源代码

仿QQ面板的WinForm窗体 说明:前几天在一个朋友那里看到做得很漂亮的一个企业及时通讯软件,利用C#编写,完全没有利用第三方控件就实现了类似于QQ面板的效果,非常漂亮。 回家之后凭着自己的记忆和查阅MSDN尝试实现了一下,初步实现了类似效果,现在奉献给大家。 在程序中用到了三种控件(不包括窗体类):ImageList、Button和ListView。Button控件显示好友分组,点击之后显示相应好友分组的信息;ImageList控件用于存放好友头像;ListView控件用于显示好友列表。在程序中不是用Location来定位控件的位置,而是使用Dock属性来设置控件的停靠,并随着父控件一起调整大小。文章说明请见:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/05/31/2499194.aspx

C# 类似qq聊天的群列表成员自定义控件

前几天做的是qq聊天的好友列表,最近开始做了一个群成员列表!研究了一下qq的群列表,于是仿照做了一个类似的,有不足之处请提出! 上面的群成员(2/23)是使用的lable标签实现的,哈哈!!!

liutian1234567890的博客 1831

Android 实现QQ好友列表

在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的。接触Android,也才一年的时间,大部分时间花在工作上(解bug。。。),界面上开发很少参与。自己维护的系统应用里,有个ExpandableListView的界面(其实android例子APIDemo也有类似的例子)就在这里写个Demo供新手参考。 ExpandableListView的用法:难点就是重写BaseExpandableListAdapter及提供的数据源。 效果图:  

C# 高仿腾讯QQ (主窗口好友列表基本完成) (3)

欢迎进入我的博客网站http://www.8timer.com 没想到写了两篇关于仿QQ的界面效果图的文章才两几天,关注的人还真不少,看来大家对QQ还真是情有独衷啊!呵呵! 首先,我并没有太多的时间花在这上面,也只有每天下班后,有空就研究研究.好了,废话不说.首先还是贴几张这几天研究的成果的效果图.等程序完功,再贴代码.如果你有兴趣,请继续关注我的博客吧! 图:左边为...

weixin_30813225的博客 304

C#自己绘制的QQ好友列表控件

详细介绍 看些的博客 http://blog.youkuaiyun.com/crystal_lz/article/details/8170491 顺便希望有人能解决一下博客中提到的TypeConverter的问题!、、

USB2.0信号完整性测试之眼图

名称线缆颜色引脚描述红色绿色白色GND黑色。

qq_53766840的博客 3285

c# winform datatable合并单元格_winform项目——仿QQ即时通讯程序03:搭建登录界面...

上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析winform项目——仿QQ即时通讯程序02:数据库分析与设计今天这篇文章本来打算介绍CIM所有的界面设计,CIM的界面总共有7个,分别是登录界面、主界面、聊天界面、搜索好友界面、添加好友界面、个人数据界面、验证消息界面。为了照顾新手,我将对登录界面的搭建进行非常详细的讲...

weixin_39541121的博客 434

HighTec安装(官网免费)编译 嘎嘎详细~

安装软件最好有自己的一套安装规则,工程软件除了安装主体外还会有很多其他的东西,比如license或者还会有一些驱动,如果所有都随意安装会导致你需要卸载,或者更新软件时,有的需要将原来软件卸载干净,如果没有清晰的安装路径那真是灾难啊~请确保此目录中只有个人许可证。这样基本的配置就ok了,下面打开hightec软件检验下license是否识别到了,会让你选个工作区,建议自己建一个,要不你以后就找不到了,,,如下图拉到下面,按照要求填写信息,随便写就行,注意主要的MAC地址要填本机的物理地址,然后点击2即可。

weixin_60793044的博客 1万+

ExpandableListView实现仿QQ好友列表

想要实现仿QQ好友列表,最初的想法是ListView嵌套ListView但是实现起来太过复杂个人感觉需要处理的东西太多,不太适合新手操作。经过查阅资料发现android已经有控件实现了这个功能。它就是ExpandableListView。ExpandableListView是ListView的子类使用的时候我们同样需要为它添加适配器这里自定义适配器实现ExpandableListAdapter接口...

TT的博客 1554

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 561

Python实战:5分钟搞定固定翼无人机三自由度仿真(附完整代码)

本文提供了一个基于Python的固定翼无人机三自由度仿真快速实现方案。通过面向对象设计,封装了核心运动学模型,并对比了欧拉法与龙格-库塔法两种积分方法。文章附有完整实例代码,帮助算法工程师和研究人员在5分钟内搭建轻量级仿真环境,用于快速验证控制律、路径规划等核心算法逻辑。

docker7nomad的博客 747

ExpandableListView仿QQ好友列表

本例中,对ExpandableListView中的数据进行了封装,分为两个JavaBean,一个为Group类表示组信息,一个Child类表示该组下子列表信息: Group: public class Group { private String groupName;//分组名 private List childList;//该分组写子列表 public String getGro

白玉梁的专栏 2822

基于Dify Agent构建智能客服:攻克知识库查询、多轮对话、安全鉴权与人机协同

基于Dify Agent构建智能客服,并将知识库等核心能力工具化,再通过Chatflow进行流程编排,是一种强大且灵活的策略。它不仅解决了当前AI客服面临的诸多核心挑战,也为未来的功能扩展和智能化升级打下了坚实的基础。希望本文能为您在构建高效、智能的AI客服系统之路上提供有益的参考!dify实验室基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。关注我,获取Dify相关资源(DSL、token、交流群等)。

同名公众号:dify实验室 3742

在Fragment里面使用ExpandableListView实现仿qq好友列表

概要          本来以为这个很简单,却迟迟没有发出来....因违反发现后来出了一点小问题,我们的界面切换标题栏是改变的,这样就不能把标题栏放到activity里,我们用的是fragment啊,鉴于有些朋友只需要知道怎么在fragment里面使用ExpandableListView,这里就不废话了,先上效果图,如果觉得是您要的在向下看,节省您的时间~ 效果展示

流云飞水 6303

ROBOGUIDE教程:FANUC机器人X型焊枪气动点焊焊接

FANUC机器人X型焊枪气动点焊焊接虚拟仿真实现方法。

IndRobSim 4385

基于STM32L4XX的环境光传感器(LTR-303ALS-01)应用程序设计

/ 状态寄存器的位[2:0]表示数据状态,例如位2为1表示新数据就绪[citation:6]#define LTR303_REG_DATA_CH0_LOW 0x8D // CH0数据低字节。#define LTR303_REG_DATA_CH0_HIGH 0x8E // CH0数据高字节。#define LTR303_REG_DATA_CH1_LOW 0x8F // CH1数据低字节。#define LTR303_REG_DATA_CH1_HIGH 0x90 // CH1数据高字节。

myron6688的博客 405

Android仿QQ好友列表——ExpandableListView(初版)

代码演示: Step1:修改activity_main.xml视图文件,并添加ExpandableListView控件 <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_cont...

SmiledrinkCat的博客 848

【Unity】【Photon】Photon Fusion2 的核心Unity组件 NetworkRunner 学习笔记

本文是学习Photon Fusion2 的核心Unity组件 NetworkRunner的学习笔记。

O青草O的博客 Unity和游戏制作知识分享 1270

Android 仿QQ好友分组列表、ExpandableListView的使用详解

ListView只能显示一级列表,如果我们需要像QQ好友列表的那样的效果,就需要用到ExpandableListView,入门新手可能对该控件不是很熟悉,下面就详解一下基本用法,其实跟ListView差不多,下面来说一下具体的使用方法把!效果图:首先,布局中加入<ExpandableListView android:id ="@+id/expandableListView"

fan7983377的博客 5824

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

完全仿QQ好友列表,自定义ExpandableListView!

最近,需要做一个可展开的listview,不禁想起了ExpandableListView。但是,在写了一个简单的例子后,发现了问题:   ExpandableListView是又多个childList组成的。 当展开的childList过长,又需要打开其他的list时,用户只能先滚动到最上面关掉这个childList,才可能打开其他的childlist!   这样的用

vrix的专栏 7768

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android_ExpandableListView_仿QQ好友列表

1.编写ExpandableListView样式布局 ExpandableListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/elv_zuoye_expandable"> ExpandableListView> 2.编写

qq_38377273的博客 479

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

06.实例篇:仿QQ好友列表——ExpandableListView和ListView(下篇)

1.前言 本篇主要ExpandableListView和ListView一些jichu

壹零Boy-MePlusPlus(米加加)的博客 1949

【so easy~】完全仿QQ好友列表,自定义ExpandableListView!

最近,需要做一个可展开的listview,不禁想起了ExpandableListView。但是,在写了一个简单的例子后,发现了问题:   ExpandableListView是又多个childList组成的。 当展开的childList过长,又需要打开其他的list时,用户只能先滚动到最上面关掉这个childList,才可能打开其他的childlist!   这样的用户体验很差。iPho...

libo19881179的专栏 175

ExpandableListView的简单实现

模仿的QQ好友列表的形式,效果如下 ,数据是写死的数组 数据是写死的数组:分组名称好友名下面上代码:activity::::::::::::::::::::::::::::::::::::::::::::::::::::::;package com.activity;import com.example.expandablelistview.R;import android.app.Activit

zxb_zxb_的专栏 580
上一篇: 常用控件Toggle-Switch-SeekBar-RatingBar
下一篇: 常用控件
XHui_Lin
博客等级 码龄10年 27粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值