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的背景)

hostkvm:7折优惠-香港VPS韩国VPS,8折优惠-日本软银、美国CN2 GIA、新加坡直连VPS

hostkvm本月对香港国际线路的VPS、韩国CN2+bgp线路的VPS正在做7折终身优惠,对日本软银线路、美国CN2 GIA线路、新加坡直连线路的VPS进行8折终身优惠促销。所有VPS从4G内存开始支持Windows系统,当然主流Linux发行版是绝对不会缺席的!官方网站:https://hostkvm.com香港国际线路、韩国,7折优惠码:2021summer日本、美国、新加坡,8折优惠码:2...

收到几个新商家投稿(HostMem,无忧云,青云互联,TTcloud,亚洲云端,趣米云),一起发布排名不分先后

7月份已经过去了一半,炎热的夏季已经来临了,主机圈也开始了大量的夏季促销攻势,近期收到一些商家投稿信息,提供欧美或者亚洲地区主机产品,价格优惠,这里做一个汇总,方便大家参考,排名不分先后,以邮件顺序,少部分因为促销具有一定的时效性,价格已经恢复故暂未列出。HostMem部落曾经分享过一次Hostmem的信息,这是一家提供动态云和经典云的国人VPS商家,其中动态云硬件按小时计费,流量按需使用;而经典...

香港九龙湾(27元) 2核2G 20元 香港沙田

弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港VPS、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统。国庆活动 优惠码:hosu10-1产品介绍...

expandablelistview为你推荐
订房系统酒店PMS系统具体是什么爱短信官网求助。爱短信爱聊怎么用?youtube创始人李开复的创新工场是做什么的啊???renderpartialYii中render和renderPartial的区别avc是什么格式格式工厂转的[AS3 720 AVC]mp4是什么格式怎么用电脑发短信怎样用电脑给别人的手机发短信?java程序员招聘女java程序员好找工作嘛gbk内码高考姓名gbk内码查询短信套餐手机短信都有什么套餐particular教程particular的用法
动态域名解析 域名转让 vps侦探 新网域名管理 a2hosting 踢楼 fastdomain winhost gateone 鲜果阅读 ev证书 一元域名 魔兽世界台湾服务器 台湾谷歌网址 申请个人网站 jsp空间 可外链网盘 上海联通宽带测速 net空间 服务器防火墙 更多