首页
学习
活动
专区
圈层
工具
发布

A022-列表容器之ExpandableListView

概述 本节课介绍Android中可实现二级可展开收缩列表的ExpandableListView容器,笔者感觉它非常难用并且难理解,很多时候我们可能需要对控件进行扩展和定制,然而它不太方便扩展,它使用难点主要在数据结构上和对控件的事件监听...上面实现的效果可展开的二级列表,每个组项都可能有若干个子项,默认的ExpandableListView不太美观,我们需要通过自定义布局类美化它,在使用过程中有一些需要我们去了解的点,会在实现过程提一下。...) getChildrenCount(获取子项个数) getGroup(获取组对象) getChild(获取子对象) getGroupId(获取组项id) getChildId(获取子项id) hasStableIds...(组和子元素是否持有稳定的ID) getGroupView(获取显示指定组的视图对象) getChildView(获取显示指定项的视图对象) isChildSelectable(子项是否可选中) 传入组项列表...,原生的效果是完全不能满足我们的,这里提一点就是,熟练掌握API和解决问题能力很重要,不管UI怎么变我们都有办法去实现,可能只要我们找到对应的API设置一下或者看看有没有大神造好了轮子,终究我们还是可以找到解决方案

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS获取节点的兄弟,父级,子级元素的方法

    2015-08-18 03:48:27 下面介绍JQUERY的父,子,兄弟节点查找方法 jQuery.parent(expr)  找父亲节点,可以传入expr进行过滤,比如$("span").parent...".class") jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素 jQuery.children(expr).返回所有子节点...,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点 jQuery.contents(),返回下面的所有内容,包括节点和文本。...(),返回所有之前的兄弟节点 jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点 jQuery.nextAll(),返回所有之后的兄弟节点 jQuery.siblings(),返回兄弟姐妹节点...jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()的返回结果,不会有初始集合中的内容,比如$("p"),find("span"),是从元素开始找

    12.1K10

    无限级子商户的查询优化方法

    无限级平台必须解决的一个问题,分享一下我在网上学习到的方法。...假设平台有这样的上下级关系 A 有 2 个直接下级B、C,    B有2个直接下级D、E,    C有2个直接下级F、G 我们正常的做法是使用递归这样操作:先查询出所有上级为A的子商户,再查询所有上级为上一个查询结果的子商户...如第一步查询出B、C,第二步查询所有上级为B、C的商户(mysql的 IN 范围条件实现)。 这样的递归查询耗时是非常长的。...(个人觉得具体消耗在连接mysql数据库的次数上) 现在我们的做法是这样的:一次性查询出所有的商户信息(id、上级id),并且按正序排列(添加时间,因为要有第三级的商户必须先有第二级商户,按正序排列才可以正常得到结果...    $teams[$id]   = $id;     // 把我们要查询的这个id先添加在这个数组里,设置的值任意,只要让这个键值存在即可。

    1.7K10

    安卓ExpandableListView的详细使用教程(附代码解析过程)

    ExpandableListView 一、实现效果 二、实现步骤 1.编写父布局parent.xml 2.编写子布局child.xml 3.编写适配器类GradeAdapter 三、解析适配器类 一...、实现效果   ExpandableListView又称可扩展的ListView,简单来说长这个样: 每一个一级布局下面又可以展开二级布局。...二、实现步骤 使用ExpandableListView主要有三个步骤: 编写父布局 编写子布局 适配器的书写 1.编写父布局parent.xml   父布局其实很简单,就是两个并排的TextView,用于展示课程名字和分数...child.xml   子布局就是多个TextView列在一起,用于展示成绩的详细信息: 的视图,也就是各种课程的名称以及分数: getChildView(),返回子布局里面的视图,也就是每门学科的详细信息: GradeAdapter的详细代码为

    1.8K20

    C++核心准则​讨论:持有没有被句柄管理的资源时切勿抛出异常

    Discussion: Never throw while holding a resource not owned by a handle 讨论:持有没有被句柄管理的资源时切勿抛出异常 Reason(...另一方面,另一个文件的ifstream将正确关闭其文件(销毁时)。...如果必须使用显式指针,而不是具有特定语义的资源句柄,请使用带有自定义删除器的unique_ptr或shared_ptr: void f(int i) { unique_ptr<FILE, int...if (i == 0) return; // ... } Better: 更好的做法: void f(int i) { ifstream input {"a file"}; /...检查器必须将所有“暴露的指针”视为可疑。检查器可能必须依靠人工提供的资源列表。首先,我们了解标准库容器,字符串和智能指针。使用span和string_view应该会很有帮助(它们不是资源句柄)。

    93710

    Android之微信朋友圈UI实现--ExpandableListView+GridView

    步骤: 总布局的创建,里面只要一个ExpandableListView控件。 ExpandableListView的item布局创建,本布局用最传统的做法分为Group和Child布局。...ExpandableListView适配器创建。 数据加载。 查看效果图,这个图在上传的时候压缩了就变的模糊了,请谅解。 ?...1: 总布局的创建,里面只要一个ExpandableListView控件。 这里文件非常简单,只有一个控件,当然ExpandableListView也是有很多属性的。...适配器创建 适配器的创建才是重点,首先我们对ExpandableListView自定义适配器,然后再在里面嵌套一个GridView的自定义适配器,当然你也可以调用系统的,不过个人觉得自定义有更好的灵活性...,写在了ExpandableListView适配器的里面,数据还是一样的传递。

    1.5K30

    android expandablelistview横向,expandableListView 总结

    实现效果图: expandableListView groupIndicator 图片默认是在左边,而且比较难看,而我要的是实现groupIndicator 在右边自定义图片, 换图片 最简单的就是直接...attr/expandableListPreferredItemIndicatorRight @android:drawable/divider_horizontal_dark_opaque 看到这个没有...然后在适配器上getgroupView 设置父布局,在getChildView设置子布局。和listView的差不多。...现在要做的就是设置监听 监听ImageView expandableListView 的点击事件,这里我是点图片展开和关闭Child,长点击expandableListView 也展开和关闭Child,...+ ” :groupPosition”); return true; } return false; } }); // 子菜单打开一个其他的就关闭 mlist.setOnGroupExpandListener

    67920

    异常、线程

    Exception或者是Exception的子类 3.方法内部如果抛出了多个异常对象,那么throws后边也必须声明多个异常 如果抛出的多个异常对象有子父类关系 ,那么直接声明父类异常即可 4.调用了一个声明抛出异常的方法.../* FileNotFoundException extends IOException extends Exception 如果抛出的多个异常对象有子父类关系,那么直接声明父类异常即可...; /* 子父类的异常: -如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常 -父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常,此时子类产生该异常...{ } //子类重写父类方法时,不抛出异常 public void show03() { } /* 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常...java程序属于抢占式调度,哪个线程的优先级高,哪个线程优先执行;同一个优先级,随机选择一个执行 */ public class Demo01Thread { public static

    99220

    android 伸缩控件ExpandableListView 展开失败的可能原因。

    直到今天,本来想做个日程表,考虑到月份是可选的,所以想重新使用 ExpandableListView,逐使用之。...我在确定编码没问题之后,就点运行了,几秒后, getGroupView 加载的一级目录 xml 布局显示出来了,OK,很好,然后我就点击了,点了之后发现,妹的,没展开二级目录。...于是下意识地去查看我在getChildView引入的 xml 布局,我上面说的第一个 xml 布局是一级目录的,在getChildView 是二级目录的 布局。...然后我就开始 把原来不行的 布局文件 和 替换后可以的来对比。控件类型对比差异:不行的布局文件带有 button 控件,可以的没有带有button,其它地方一样。...button 的存在导致 ExpandableListView 一级目录可点击性失效。这真是天坑,马上百度百度,看看有没有相同案例,百度了才发现,有碰到和我相同问题的,但是都没有解决!!!

    1.1K80

    android两级分类列表且子列表item不同布局实现

    发现,expandlistView的子布局 有两种  一种是listview效果  一种是gridview效果 这种情况 我们就要自己单独写一个逻辑处理 了 。...(null);// 这个是去掉父级的箭头 2.设置父级默认全部展开 for (int i = 0; i < liveList.size(); i++) { mListView.expandGroup...(i); } 3.设置点击不能收缩 mListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {...= 2; 还有特别需要注意的一点是  @Override public int getChildTypeCount() { return 3; } 这个方法 返回的是 子布局的总共有几种样式...这个我不知道我说没说明白,源码我也整理出来了,因为我觉得没有 源码的博客都不是好程序员... 源码在这里 大家下载就行了。

    1.3K10

    Java异常详解

    关键字必须写在方法的内部; ②throw关键字关键字后面new的对象必须是Exception对象或Exception子类的对象; ③throw关键字抛出指定的异常对象,我们必须处理: throw关键字后面创建的是...Exception或者是Exception的子类; ③方法内部如果抛出了多个异常,那么throws后面也必须声明多个异常(若有子父类关系,那么直接声明父类即可); ④调用了一个方法抛出的异常,我们就必须处理声明的异常...②如果try中产生了异常,就会执行相应的catch里面的异常处理逻辑,执行完catch之后还会继续执行try...catch之后的代码; 反之,如果try中没有产生异常,就不会执行catch里面的异常处理逻辑...,多次处理; ③多个异常,一次捕获,一次处理; 2、注意 ①一个try多个catch,如果异常有子父类关系,子类必须写在父类上面,否则会报错; ②如果try中存在两个可能存在的异常,当第一个出现异常,try...十一、子父类异常 概述: ①如果父类抛出了多个异常,子类重写父类方法时,要抛出和父类相同的异常或者父类的子类的异常或者不抛出异常; ②如果父类没有抛出异常,子类重写父类的方法也不可能抛出异常,此时子类产生异常

    56110

    Android开发笔记(一百)折叠式列表

    可折叠列表ExpandableListView 嵌套列表ExpandableListView是又一种常见的控件,常见的业务场景包括:好友分组与好友列表、订单列表与订单内的商品列表、邮件夹分组与邮件列表等等...ExpandableListView常用方法 Android自带的ExpandableListView可以直接用于嵌套列表,点击一个组,展开该组下的子列表;再点击这个组,收起该组下的子列表。...下面是ExpandableListView的常用方法说明: setAdapter : 设置适配器。...监听器需要重写的点击方法 : onChildClick ExpandableListView适配器 ExpandableListAdapter是ExpandableListView的专用适配器...ExpandableListView常见问题 ExpandableListView有时会发现子项不会响应点击事件,这可能是某个环节没有正确设置。

    2.6K40

    bytebuf池_Netty ByteBuf

    异常 判断写入需要的最小空间,如果该空间小于ByteBuf的可写入空间,直接返回,不进行扩容 判断写入需要的最小空间,如果该空间大于ByteBuf的(最大容量-当前的写索引),不进行扩容,抛出IndexOutOfBoundsException...如果读取的字节数长度大于实际可读取的字节数,抛出IndexOutOfBoundsException异常。...如果写入的字节数大于可写入的字节数,会抛出IndexOutOfBoundsException异常。...1 bytesBefore(byte value):从ByteBuf的可读区域中首次定位出现value的位置,没有找到返回-1。...:如果跳过的字节长度小于0,则抛出IllegalArgumentException异常,如果跳过的字节数大于可读取的字节数,则抛出IndexOutOfBoundsException异常 校验通过之后,readIndex

    73420

    System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“寄宿的 HWND 必须是指定父级的子窗口。”。 这是很典型的 Win32 错误,本文介绍如何修复此错误。...问题 你有可能在调试嵌入窗口代码的时候遇到错误: System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”...原因和解决办法 出现此错误,是因为同一个子窗口被两次设置为同一个窗口的子窗口。...具体来说,就是 A 窗口使用 HwndHost 设置成了 B 的子窗口,随后 A 又通过一个新的 HwndHost 设置成了新子窗口。...要解决,则必须确保一个窗口只能使用 HwndHost 设置一次子窗口。

    91130

    打印出“神级代码注释”,没有你想象的那么容易哦~

    上文介绍一个神奇的网站: 网站 Ascii World:(链接:http://www.asciiworld.com/)。...但是没有说明如何使用,由于怕篇幅太长因此在这里介绍一种简单的方法,利用vim来实现的办法 我这里使用的是python3.6,deepin系统 (1)打开终端(ctrl+alt+t),输入 vi test.py...显示如下,即新建了一个名字为test.py的文件 ?...(2)复制一个注释的样式,并粘贴到上图所示新建的test.py中,例如 /*** * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬...注意:虽然上面的网址给了很多注释的图样,但是存在这打印双引号会报错的问题,这里我采用了手动修改,就图样中的双引号修改成转义的样式例如 " ——> \" 【搞得不好,仅供参考】 ? ----

    68140
    领券