首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GridView结合tablayout实现展开收缩功能

PS:最近有一些粉丝给我留言说怎么实现那种 上面多个item,然后可以展开收缩,当点击了item后下方会出现一些数据,而且item对应多个型号,我当时看到这也就明白了他的意思,我上个图大家就明白了,这是腾讯云文章里的一个...item分类后,如车,那么下方就要出现适合该车的轮胎,对应多个厂家的轮胎,就用tablayout来实现,这里我写的效果图界面很丑,但功能是可以的。...是我写的适配器item的布局,里面只要一个textview,这里就略。...,gridview折叠展开,并且调出数据 实现展开收缩的方法可能有很多,今天这个方法个人感觉还是简单易懂的,就是获取到全部数据,然后再定义个只现实的listRow用来存放显示的数据,咱们是一行四列,所以...//方法里: //一开始listS为空,直接添加上,没有数据就不显示。

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

    Java基础综合测试

    ,写的时候思路就错了,其中分解后的素因子最后只有2、3、5、7四种,是包含的意思,不是结合的次数; 判断数字是否能整除的前提是看余数是不是等于0,如果都能整除的话最后会变成1,这样结束条件就有了,只要不能整除的全部都不是丑数...假设要行走的距离为L米,每次找车和开锁的一共时间是T1秒,每次停车和锁车的时间一共是T2秒,骑车的速度为V1米/秒,行走的速度为V2米/秒。 你现在是个小程序员了,请编程判断是骑车快还是走路快。...具体规则如下: 第一行是1个* 第二行是3个* 第三行是5个* … 依次类推,一直到第N行(第N行的开始没有空格)。 更多了解可以参见样例。...以及最接近平均值的那只鸡的行号和列号(行号和列号都是从1开始)。 ​...每组数据输出占一行。 ​ 注意:行号和列号从1开始,如果有多只鸡相同接近平均值,那么输出排在最前面的一只 ​ (即行号最小的那只,如果行号相同则取列号最小的那只)。

    93620

    AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析

    那么,我们这次阅读源码的目的就是要搞清楚:卡位获得焦点时放大、缩小动画是如何实现的? 阅读源码时经常会碰到一个问题,那就是该从哪入手,从哪开始看?...这就是为什么我习惯带着目的去阅读,因为我们可以从目的分析,猜测我们需要的代码应该在哪里,然后找到我们该从哪里阅读,再一步步的去分析。 比如我们这次的任务,我们该从哪里入手阅读源码呢?...ListRow:可以理解成一个 Mode,也就是把每一行抽象封装成一个 ListRow BrowerFragment:用来展示可左右上下滑动的视频列表界面,Leanback 已高度封装,我们只需提供一个页面的...好了,到这里基本就分析完了,Leanback 库关于卡位的缩放动画的实现,从我们要从哪里着手开始阅读源码到找到焦点监听实现的相关代码到动画实现的代码整个过程基本就是这样。...以后大家在想看源码的某个功能是如何实现时,可以参考这种思路来进行分析,一步步的去跟进,只找我们目标相关的代码,这样可以不至于被整个源码的复杂性混乱掉。 最后,我想再总结一下上面的过程。

    1.7K70

    Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据

    在金融大数据功能中,使用了TuShare的数据接口,其所有接口都采用WebAPI的方式提供,本来还在纠结着应该搬那些数据接口给用户使用,后来发现,所有数据接口都有其通用性,结合Excel灵活友好的输入方式...此篇对应的Excel催化剂功能实现:第98波-零代码零距离轻松接触并拥有金融大数据 - 简书 https://www.jianshu.com/p/3cd41a483448 如上述所说,若非想到这些共性的部分...,就是向Web API提交数据了,使用了苏飞封装的httpHelper,几行代码完事。...,难免容易带上一些自负的情绪,Excel催化剂坚持为技术社区做贡献,可能很大一个群体总以为这不是个东西,太皮毛的分享。...没有对零售业、制造业、商贸行业的理解,和对Excel的极深入的精通,再带上对数据分析、数据处理ETL、商业智能BI、面向对象编程语言的掌握,最后附上对共性事物的抽象理解能力、并横向跨界发散思维的活跃,是没法带出这么多优秀成果的

    52210

    AndroidTv Home界面实现原理(一)——Leanback 库的使用

    接下去应该是梳理一下 Android Tv 主界面实现原理及解析的一个系列博客了,大体上的安排是先介绍 Google 官方提供的 Leanback 库的使用,如何使用该库来实现简单的 Home 界面,然后再去分析...但要实现左右单行滑动,上下整体滑动的效果,我只能想到上下用 VerticalGridView 来实现,每一行是它 itemView,而每一行的实现则用 HorizontalGridView 来实现。...,也就是把每一行抽象封装成一个 ListRow 用法跟 RecyclerView 很像,就是可能单独从命名上来理解会有些乱。...GridItemPresenter.png 最后调用 BrowerFragment 的 setAdapter() 将总的 ArrayObjectAdapter 对象设置进去,就可以了。...思考 学会初步使用 Leanback 实现一个简单的 Home 界面后,你会发现,我们只需要提供每一行的数据,以及每行自己 itemView 的布局和数据绑定方式即可。

    2.9K70

    【综合笔试题】难度 25,真实面试难度的模拟题

    如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入额外的空格。..."shall be " 而不是 "shall be", 因为最后一行应为左对齐,而不是左右两端对齐。...; 如果当前行为最后一行,特殊处理为左对齐; 其余为一般情况,分别计算「当前行单词总长度」、「当前行空格总长度」和「往下取整后的单位空格长度」,然后依次进行拼接。...(words[i++]); } // 当前行为最后一行,特殊处理为左对齐 if (i == n) {...复杂度为 空间复杂度:最坏情况下每个 独占一行,复杂度为 最后 这是我们「刷穿 LeetCode」系列文章的第 No.68 篇,系列开始于 2021/01/01,截止于起始日 LeetCode

    75430

    LeetCode每日一练(杨辉三角)

    } } 需要注意的是,题目示例的第三行结果是[1,3,3,1]: 说明它是从第0行开始计算的,注意这个细节,最后当然就是代码通过测试了: 这道题到这里就算是结束了,但是题目仍然给了一个进阶要求...想象一下,对于某一行的杨辉三角数据,其值应该是上方元素值加左上方元素值,所以,我们完全可以将每一行的数据先存在一个一维数组中,再通过它求出接下来的每一行,比如求第3行的元素值,那么首先需要得出第一行,第一行的元素值就只有一个...此时从右往左计算,最后一个元素值等于索引1和索引2位置上的元素值相加,结果为1: 倒数第二个元素值等于索引0和索引1位置上的元素值相加,结果为2: 然后继续添0: 以同样的方式继续计算...0操作,我们完全可以从杨辉三角的构造中得到答案: 对于每一行的元素值,都需要先知晓其前一行的元素分布,首先第0行和每一行的第一个元素都不需要考虑,值肯定是1,所以我们从每一行的最后开始计算,一直计算到第一个元素值停止...,这些位置上的元素值都等于上方加左上方的元素值,比如: 第1行的第2个元素1就应该由上方的0和左上方的1相加得到,但因为现在只有一个数组了,所以添0是必须的,0充当的就是最后一个元素的上方元素值

    56310

    【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

    最短路径 从 2 和 3 之间取最短的最短路径 , 是 2 , 对应最短路径 5 , 最短路径为 1 + 5 = 6 通过分析 , 可以得出 从 1 开始的最短路径为 1 -> 2 -> -5 -> 8..., 其值为 6 ; dp[3][2] 表示从第 3 行第 2 列 的 -5 出发 , 走到最底层的最短路径 , 其值为 3 ; dp[0] 只有一个有效元素 , dp[1] 有两个有效元素 , dp[...i 取值 0 ~ n - 1 , 则 dp[n-1][i] 的值就是 其本身 triangle[n-1][i] 数字三角形 最后一行 数字 , 即 n -1 行 数字 , 作为 初始化数据 ; 然后开始从...其本身 triangle[n-1][i] // 数字三角形 最后一行 数字 , 即 n -1 行 数字 , 作为 初始化数据 ; // 然后开始从 n - 2 行开始计算...每个点 都有 从起点开始 走到该点 的 最短路径 ; 如 4 这个点 , 从 起点 1 开始走 , 肯定走 1 -> 2 -> 4 路线 是最短路径 , 为 7 ; -5 这个点 , 从 起点 1

    77220

    笨办法学 Java(四)

    更改代码,使其查找具有最少学分的人,而不是具有最高 GPA 的人。 练习 56:从文件中读取记录的数组(温度重访) 这个练习从互联网上的一个文件中填充了一个记录数组。...然后在第 59 行,我们看到了一些我们在前几个练习中没有见过的东西:一个 foreach 循环。这表示“对于牌组中的每张卡……”由于这个for循环的主体中只有一行代码,我省略了花括号。...第 34 行定义了我们的 52 张卡片的数组(从 0 到 51 索引)。 第 36 行是另一个 foreach 循环。变量 s 将被设置为"clubs",然后 “方块”,然后“红心”,最后“黑桃”。...记录的第二行是房间名称,我们只用于调试。 从记录的第三行开始是房间的描述,一直到有一行只有%%的行为止。描述中允许有空行。 在第一个双百分号之后是一个出口列表。...第 122 行定义了 i,我用它来表示 exits 和 destinations 数组中我们要放入下一个值的槽的索引。然后从第 123 行开始又是一个无限循环。

    10210

    爱说JDK集合-List源码剖析

    =2, elementData, 往后移动的起始角标位=3, 要往后移动的个数=1); elementeData这个数组,从第2位开始(第3个元素),拷贝1个元素,到...elementData这个数组(还是原来的这个数组),从第3位开始(第4个元素开始)。...完成指定位置插入数据的操作。 (6).remove(index)方法 程序猿说我下班了,绝对是违背了山盟海誓里说的,“我绝对不会骗你”。...2).我们这里index=2, 2>2不成立,走else分支,然后,我们可以看到他通过一个for循环进行遍历,从最后一个节点开始,每次都查找Node节点的prev节点,直到index+1的位置时,就跳出循环了...在内存里实现一个基本的队列的话,可以用LinkedList。 生活中的美好,从一行代码的运行开始,从朝夕相伴的爱情开始。 最后谢谢大家阅读,有不足之处,欢迎指出。

    17110

    关于RecyclerView你知道的不知道的都在这了(下)目录正文

    第 1 章至第 5 章节内容在上一篇中:关于RecyclerView你知道的不知道的都在这了(上) 6....应用场景: 我们来举个例子,就不用官方给的例子了,我额外补充一种场景:界面上存在多行可分别左右滑动的列表控件,即每行是一个 RecyclerView,每行里的 Item 布局样式一致,这时候就可以让每一行的...这样的好处是,当某一行被移出屏幕时,可以将这一行的每个卡位都回收起来,供其他行使用,而不至于每一行每次都是重新创建。...我目前也不懂,但我就是带着这么一种想法,也是打算这么去做的。虽然跟着大神的文章,最后确实能实现想要的效果,但其实掌握并不是很牢,并不大清楚为什么需要这么写,只是因为大神说这里这么写,然后就这么写了。...ItemDecoration RecyclerView 支持为每个 Item 之间自定义间隔样式,是要空段距离,还是要以分割线隔开,还是要唯美唯幻的边框,想长啥样都行,自己写得出来就可以了,它给我们提供了这个接口

    1.3K30

    如何使用lambda表达式提升开发效率

    lambdaexpressions.html#syntax Func func1 = (String s) -> { return s.toUpperCase(); }; 如果只有一行...java.util.stream (Java Platform SE 8 ) // 声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算 // 现在,我想要一个List,包含3个数字6 List<....collect(Collectors.toList()); sixSixSix.forEach(System.out::print); Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对...// 就像sql里的排序、截取 // 我要把传入的list逆序,然后从第五个(元素下标为4)开始取值,取4条 abc = abc.stream() // 排序(按照自然顺序的逆序)...(4) // 最后收集起来转为List .collect(Collectors.toList()); System.out.println("我要把传入的list逆序,然后从第五个

    18640

    JDK的BUG导致的内存溢出!反正我是没想到还能有续集。

    而上篇文章中提到的“越来越慢”,由于可以直接的看到链表结构了,所以也很好解释了: ? 比如,我把 Demo 中 for 循环的次数修改为 100,运行之后,我们看最后一次循环的结果为: ?...remove 方法是从链表的头结点开始遍历链表,而我们每次需要移除的其实是最后一个节点,由于链表越来越长,所以遍历链表的时间越来越长。...由于初始化的情况下 head=tail=new Node(null): ? 所以在 add 方法被调用之后的链表结构里面的 item 指向应该是这样的: ?...执行之后的日志是这样的: ? 为什么最后一行输出,【offer之后】输出的日志不是 null->@723279cf 呢?...头节点的 item 不为 null 了!而头节点的下一个节点为 null,所以抛出空指针异常。 单线程的情况下代码直接运行的结果和 Debug 运行的结果不一致!这不是遇到鬼了吗。 ?

    71410

    Fabric.js 上划线、中划线(删除线)、下划线🎭

    Fabric.js 作为一个老牌 canvas 库,当然也提供中划线和下划线的配置啦,除此之外还提供了上划线的配置。\n\n\n 本文要讲解的就是这3种装饰线在 fabric.js 中的使用方法。...) 本例只有3个字母 a ,而且都在同一行。...styles 第一个元素的 key 为 0 的意思是第一行,行号下标从0开始。...其实动态设置上划线、中划线和下划线的操作都是一样的,唯一要变的就是属性名。 我以中划线为例,之后上划线和下划线只需改个属性名。...如果被选中文字没设置中划线,就添加中划线 如果不是编辑状态,只是单击了 iText 进入框选状态 如果需要全局取消中划线 全局取消 循环每个字符,并取消每个字符的中划线 需要全局设置中划线 全局设置

    2.6K20

    ​ LeetCode 118:杨辉三角 II Pascals Triangle II

    示例: 输入: 3 输出: [1,3,3,1] 进阶: 你可以优化你的算法到 O(k) 空间复杂度吗? 解题思路: 和之前写的那篇118号杨辉三角基本类似。这道题只是不用考虑每行输出,只输出最后一行。...这样只在一个数组上修改即可:该数 的值 = 该数的值+该数左边的值之和(该数不包括第一个和最后一个数)。 这道题只是不用考虑每一行输出,只输出最后一行。...用两个嵌套循环,外循环是要计算的每行数组,内循环在上一次计算的数组基础上更改数值得出该行数组。 需要注意的是:内循环 j 指针应该从每行的最后一个数开始更改。...如果 j 指针从左开始更改索引的值: 1 1,1 1,2,1 索引1 的值是索引 0 和 1的和,没问题 1,3,4,1 索引2 的值是索引 2 和索引 1的和 为4,而不是预期的3 因为我们是在同一个数组里更改每个数值的...,所以如果做左边开始求值,索引 1 的值会从2变为3,此时计算索引2的值,由于该索引左边的值已经改变为3,该索引将不再是预期值。

    35020

    c#操作数据库(winform如何修改数据库设置)

    大家好,又见面了,我是你们的朋友全栈君。鉴于很多童鞋们对数据库操作不是很熟悉,这里对数据库操作的相关知识做个介绍。 首先介绍ADO.NET中的几个常用的对象,介绍的很简单。...因为查询语句要返回的是数据,而不是查询出了几行,所以不能使用这个方法。...,而不是影响的行数,所以不能使用ExecuteNonQuery。...,也可以理解为在程序和数据库之间划了一条线,这条线最开始指向数据库中查询出来的结果集的第1行的上面(当然身为程序员,我们可以给其一个更形象化的名字–指针),如下图所示: 红色箭头就是执行玩ExecuteReader...,所以上面语句查询出来的结果应该是1行(假设用户输入的用户名存在),而且这1行只有1列—密码列(password),也就是说查询出来的结果是一个值,这个值存储在结果集的第1行,第1列。

    2.2K10

    构造函数设计3. add方法实现4. remove方法实现

    我们知道,Java在定义数组的时候,必须有一个长度。 比如: Object[] objs = new Object[3]; 这样我就定义了一个长度为3的数组。 这个是显示定义的。...提示信息已经很清楚了,他说您输入的下标为:3,而数组中最大的下标为:2 。 ? Paste_Image.png 数组中元素个数是3,下标最大为2。 那我们传一个 0 吧。...srcPos : 从哪里开始 拷贝? dest : 目标数组 destPos : 从哪里开始 粘贴?...index 等于 0 ,表示我要删除下标为0的元素。那么接下来,我是不是要把这两个元素都往左边移动一个单位呀: ? Paste_Image.png 那么, 从哪里开始拷贝?...是不是从下标为1的地方开始拷贝? 也就是从World开始拷贝吧。(所以第二个参数是 index + 1) 粘贴到哪? 是不是从Hello的地方开始粘贴,也就是第0个元素。

    79560

    初学 Python 需要安装哪些软件?

    Python编译环境可以理解为我们盖房子中的地基,因为只有地基有了,其他房子的东西才能在这个环境上顺利里的运行起来。同样的,python编译环境,也就是软件里的地基。...image.png 如果看到的是一个‘python’ 不是内部或外部命令‘的提示,这是因为再安装是忘记勾选'Add Python to PATH',建议把Python安装程序重新编译一遍,务必记得勾上这个选项...点击“新建项目”(create new project)后,按图中的顺序操作,就可以创建好项目了,在接下来的例子中,我将项目的名称命名为“Heloworld” image.png 创建完项目后,在哪里写...第1步:点击菜单栏“File”中的’new”, 第2步:在出现的对话框中选择“Python file”, 第3步:在出现的对话框中输入python文件名,这里我起了个文件名叫“hello“。...image.png 创建好模块后,你就可以在这个模块文件中输入你人生中的第一行python代码,这里我输入print hello world。用于在屏幕输出hello world。

    1.4K00

    初学python,pycharm和Spyder哪个好?

    Python编译环境可以理解为我们盖房子中的地基,因为只有地基有了,其他房子的东西才能在这个环境上顺利里的运行起来。同样的,python编译环境,也就是软件里的地基。...如果看到的是一个‘python’ 不是内部或外部命令‘的提示,这是因为再安装是忘记勾选'Add Python to PATH',建议把Python安装程序重新编译一遍,务必记得勾上这个选项。...点击“新建项目”(create new project)后,按图中的顺序操作,就可以创建好项目了,在接下来的例子中,我将项目的名称命名为“Heloworld” 创建完项目后,在哪里写python的的代码呢...第1步:点击菜单栏“File”中的’new”, 第2步:在出现的对话框中选择“Python file”, 第3步:在出现的对话框中输入python文件名,这里我起了个文件名叫“hello“。...创建好模块后,你就可以在这个模块文件中输入你人生中的第一行python代码,这里我输入print hello world。用于在屏幕输出hello world。

    10.9K00
    领券