expandablelistview怎么设置ExpandableListView每一行group的距离

expandablelistview  时间:2021-06-16  阅读:()

在ExpandableListView 下方设置一个按钮

public static void setExpandableListViewHeight(ExpandableListView listView, int childHeight) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = childHeight; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度 } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }

怎样在Expandablelistview上加展开动画效果

解决方案Github pull request链接: Android的原生提供和展开分组的ListView:ExpandableListView,然而相比于iOS上原生提供的UITableView,其UI能力不足,比如没有原生的动画展开和收起效果支持。

在开源代码社区我们可以找到几个为Android的ExpandableListView添加的动画解决方案。

其中idunnololz的AnimatedExpandableListView是不错的方案之一。



它的优点:性能较好,提供源代码而不是library(这点很重要),注释清晰。

然而性能的优化是没有止境的,当分组内的子view(childView)变得复杂,或者ListView的parent结构复杂,例如内嵌与其它LinearLayout, FrameLayout或者ScrollView之中,并且parent的使用自定义的重写的onMeasure()方法时,生成childView的效率就会大大影响应用的性能。

合理使用AnimatedExpandableListView的关键是在于AnimatedExpandableListView#getRealChildView()的实现,这是应用开发的责任。

实际项目中,通过优化getRealChildView(),动画效果的启动时间从1340ms减少到了680ms (展开一个含有5个子项目的分组)。

而发现的问题的定位和解决方案,基本是用过使用Android提供的method tracing方法(android.os.Debug.startMethodTraceing)进行分析。

优化前的getRealChildView()实现,需要大量的view初始化,因为没有可用的convertView,而事实上,在动画绘制阶段时生成的childView完全可以被重用,及时convertView并为给出。

如下面的traceview profile看到的,优化前,getChildView()消耗了超过一秒的时间。

优化后的性能: 这是如何做到的呢?这需要我们再研究一下动画展开的原理,也就是getChildView()里面耗时最长的是哪些动作。

首先排除其他因素的影响,专注于AnimatedExpandableList本收得使用,我们使用GitHub上原生提供的Example来做分析:这是展开5个子项目的分组的情况,注意5个子分组的view生成,LayoutInflater.inflate被执行了10次,是其两倍。

而inflate是相当耗时的。

有没有方法来减少这部分工作消耗呢? 方法是使用Android推荐的LRU cache来保存childView的。

关于LruCache,请见Android的reference documents和training。

这里特别要注意的是,childView在dataSet改变时需要重新生成,而不是在cache中获得,这里使用的方法是判断childView的type。

在自己的项目中需要根据情况认真考虑dataSet改变如何更新cache的问题。

效果如下所示:inflate的次数减少到5次,一次都不浪费。

消耗时间从160ms降低到80ms。

expandablelistview 与 listview 哪个效率高

您好,我来为您解答:   现在android开发貌似还没有太多的规范,google提倡的解决方法其实也不一定就是最妥善的,还是具体问题具体分析。

比如实现一个最简单的iew就有不只两种代码结构。

至于哪个好哪个不好,只能说看应用场景和复用程度吧。

  如果我的回答没能帮助您,请继续追问。

expandablelistview object getchild方法什么时候调用

想实现按日期分类照片,功能大概已经实现 有3个组 "2012-04-05", "2012-04-06", "2012-04-12" Run程序后我单击 2012-04-05这个组可以显示对应的照片,但当我继续单击2012-04-06的时候出现的是 2012-04-05这个组下面的照片,接着2012-04-12的也是一样的情况 我重新Run,单击2012-04-12,出现的照片稳和,单击其他两个组,悲剧重演,请高手指教。





代码如下 ListViewActivity public class ListViewActivity extends Activity { ExpandableListView expandableListView; ListViewAdapter treeViewAdapter; public String[] groups = { "2012-04-05", "2012-04-06", "2012-04-12"}; public String[][] child = { { "" }, { "" }, { "" } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); treeViewAdapter = new ListViewAdapter(this, ListViewAdapter.PaddingLeft >> 1); expandableListView = (ExpandableListView) this .findViewById(R.id.expandableListView); List treeNode = treeViewAdapter.GetTreeNode(); for (int i = 0; i < groups.length; i++) { ListViewAdapter.TreeNode node = new ListViewAdapter.TreeNode(); node.parent = groups[i]; for (int ii = 0; ii < child[i].length; ii++) { node.childs.add(child[i][ii]); } treeNode.add(node); } treeViewAdapter.UpdateTreeNode(treeNode); expandableListView.setAdapter(treeViewAdapter); }

expandablelistview和listview有什么区别

iew和iew有什么区别 本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。

然后用循环语句输出指定的数组元素。

其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。

读者可仔细领会元素值的各种不同的表示方法。

应该注意指针数组和二维数组指针变量的区别。

这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的。

二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少。

而指针数组类型表示的是多个指针(一组有序指针)在一般形式中"*指针数组名"两边不能有括号。

例如: int (*p)[3]; 表示一个指向二维数组的指针变量。

该二维数组的列数为3或分解为一维数组的长度为3。

int *p[3] 表示p是一个指针数组,有三个下标变量p[0],p[1],p[2]均为指针变量。

指针数组也常用来表示一组字符串,这时指针数组的每个元素被赋予一个字符串的首地址。

指向字符串的指针数组的初始化更为简单。

例如在例10.32中即采用指针数组来表示一组字符串。

其初始化赋值为: char *name[]={"Illagal day",

怎么设置ExpandableListView每一行group的距离

众所周知,android的ExpandableListView相当于ListView中嵌套ListView,而主ListView的背景可以通过android:background属性来设置,那么子ListView可不可以用一种相对简单的方式设置其背景呢?(不是设置某个单独的item背景,而是一次性设置整个ListView的背景)

hosteons:10Gbps带宽,免费Windows授权,自定义上传ISO,VPS低至$21/年,可选洛杉矶达拉斯纽约

hosteons当前对美国洛杉矶、达拉斯、纽约数据中心的VPS进行特别的促销活动:(1)免费从1Gbps升级到10Gbps带宽,(2)Free Blesta License授权,(3)Windows server 2019授权,要求从2G内存起,而且是年付。 官方网站:https://www.hosteons.com 使用优惠码:zhujicepingEDDB10G,可以获得: 免费升级10...

提速啦(69元起)香港大带宽CN2+BGP独享云服务器

香港大带宽服务器香港大带宽云服务器目前市场上可以选择的商家十分少,这次给大家推荐的是我们的老便宜提速啦的香港大带宽云服务器,默认通用BGP线路(即CN2+BGP)是由三网直连线路 中国电信骨干网以及HGC、NTT、PCCW等国际线路混合而成的高品质带宽(精品带宽)线路,可有效覆盖全球200多个国家和地区。(适用于绝大部分应用场景,适合国内外访客访问,域名无需备案)提速啦官网链接:点击进入香港Cer...

阿里云年中活动最后一周 - ECS共享型N4 2G1M年付59元

以前我们在参与到云服务商促销活动的时候周期基本是一周时间,而如今我们会看到无论是云服务商还是电商活动基本上周期都要有超过一个月,所以我们有一些网友习惯在活动结束之前看看商家是不是有最后的促销活动吸引力的,比如有看到阿里云年中活动最后一周,如果我们有需要云服务器的可以看看。在前面的文章中(阿里云新人福利选择共享性N4云服务器年79.86元且送2月数据库),(LAOZUO.ORG)有提到阿里云今年的云...

expandablelistview为你推荐
isbackgroundbokeh是什么意思instagram电脑版苹果macbook pro做摄影拍照后期有什么优势吗?为什么很多摄影师用它?和thinkpad W系列比呢?snake模型什么是S-L头模型?broadcast播播……拼音shoujiao手机电池突然充不上电,是怎么回事?该怎么办?防火墙技术应用在网络支付流程中,防火墙技术与数据加密技术应用则重点有什么不同?yui3YUI最详细的资料erp系统教程ERP系统怎样操作,有教学视频吗?东兴证券网站东兴证券超强版下载,东兴证券超强版v6下载官方网站,东兴证券软件下载怎么查微信注册时间怎么查对方的微信号什么时候注册的
独立ip主机 2019年感恩节 东莞电信局 Dedicated 韩国空间 php主机 已备案删除域名 秒杀汇 河南移动m值兑换 电信虚拟主机 江苏双线服务器 空间租赁 lamp架构 宿迁服务器 双11促销 博客域名 酷锐 cx域名 硬防 vim命令 更多