Android实现qq列表式的分类悬浮提示
作者:甄某某某某 发布时间:2022-09-01 09:23:44
标签:android,悬浮,提示
效果图:
这种效果的实现这里是采用自定义ExpandableListView
,给它设置一个指示布局,在滑动过程中监听当前是否应该悬浮显示分类来实现的。今天抽时间,整理了下代码,记录一下使用过程,以便有类似的需求的时候可以快速搞定。
话不多说,我们直接看代码和使用方法。
一 项目结构
上边儿三个类分别是我们的自定义ExpandableListView
,主界面,以及ExpandableListView
使用的Adapter
。下边儿几个xml文件分别是主界面布局,指示器布局,ExpandableListView
子项布局,ExpandableListView
组布局。
二 实现代码
1.在xml中声明自定义ExpandableListView
<test.com.expandablelistviewdemo.CustomExpandListview //这里不唯一,看你具体把CustomExpandListview放在哪里
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"></test.com.expandablelistviewdemo.CustomExpandListview>
2.声明数据源相关(这里为了演示,数据全是String类型,看具体需求可改变)
private String[] parentSource = {"分类1", "分类2", "分类3", "分类4", "分类5"};
private ArrayList<String> parent = new ArrayList<>();
private Map<String, ArrayList<String>> datas = new HashMap<>();
3.初始化演示数据
//种类
for (int i = 0; i < parentSource.length; i++) {
parent.add(parentSource[i]);
}
//给每个种类添加模拟数据
for (int i = 0; i < parent.size(); i++) {
String str = parent.get(i);
ArrayList<String> temp = new ArrayList<>();
for (int j = 0; j < 20; j++) {
temp.add("" + j);
}
datas.put(str, temp);
}
4.初始化Adapter以及使用
myAdapter = new MyAdapter(this, parent, datas, listview);
listview.setAdapter(myAdapter);
在初始化adapter
的时候,可以看到我们在构造方法中传入了上下文对象,种类,数据,以及我们的CustomExpandListview
对象,所以在CustomExpandListview
中我们要添加相应的构造方法。
5.设置悬浮提示布局
listview.setHeaderView(getLayoutInflater().inflate(R.layout.indictor_layout, listview, false));
6.其他
默认全部展开
for (int i = 0; i < parent.size(); i++) {
listview.expandGroup(i);
}
item点击事件
listview.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
Toast.makeText(MainActivity.this, "点击了第" + (i + 1) + " 类的第" + i1 + "项", Toast.LENGTH_SHORT).show();
return true;
}
}
);
三 总结
从上边儿的步骤可以看出,使用CustomExpandListview实现图中的效果是非常容易的,以上就是这篇文章的全部内容,希望对大家的学习或工作带来一定的帮助,如果有疑问可以留言交流。


猜你喜欢
- 将一个字符串转化成String[]数组,提供两种方法前言将字符串转化成数组提供两种方法:1.split("");2.to
- 方法一:调用windows自带的shutdown.exe (缺点:会出现倒计时窗口)System.Diagnostics.Process.S
- 我们第三章分析过客户端接入的流程, 这一小节带大家剖析客户端发送数据, Server读取数据的流程:首先温馨提示, 这一小节高度耦合第三章的
- 若 Spring 检测到 bean 实现了 Aware 接口,则会为其注入相应的依赖。所以通过让bean 实现 Aware 接口,则能在 b
- SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密。传
- 本文实例讲述了C#实现百分比转小数的方法。分享给大家供大家参考。具体分析如下:近日需要用到百分比转小数功能,而且百分比是字符串格式(可以带或
- Android Notification使用方法总结一. 基本使用1.构造notification NotificationCompat.B
- 本文以实例形式讲述了C#单例模式(Singleton Pattern)的实现方法,分享给大家供大家参考。具体实现方法如下:一般来说,当从应用
- 一、概述项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等。而google官方也帮我们封装好了一个类:CountDownTime
- java 中编写 GUI 有两中工具包,分别为 AWT、Swing。Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和
- 本文介绍了android APP登陆页面适配的实现,分享给大家,具体如下:先看效果图。登陆首页效果图原理为RootView增加监听事件,然后
- 一、前言我们经常会遇到业务想看debug日志的问题,但是debug日志频繁打印会对日志查看有影响,且日志多对系统也会有一定的压力,因此,如果
- 知识点:内部存储空间获取总大小和可用大小;sdcard存储空间获取总大小和可用大小;新名词记录{StatFs:描述文件系统信息的类}概览在开
- 概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:1、若它的左子树不为空,则左子树上所有节点的值都小于根结点的值。
- 执行如下的jni调用:package jni;public class JNITransObject { public nativ
- intellij idea是一款非常优秀的软件开发工具,它拥有这强大的插件体系,可以帮助开发者完成很多重量级的功能。今天,我们来学习一下如何
- 1、mybatis-plus @DS实现动态切换数据源原理首先mybatis-plus使用com.baomidou.dynamic.data
- FeignClient设置动态Url1. 需求描述一般情况下,微服务内部调用都是通过注册中心,eureka,zookeeper,nacos等
- 本文为大家分享Android自定义Spinner适配器的相关知识点,供大家参考,具体内容如下一、大致效果二.关键代码在注释中讲重点吧。 (1
- 前言上一篇我们介绍了使用 sqflite 这个数据库工具在 Flutter 的应用中建立本地数据库的实例应用。了解过数据库的同学应该会知道,