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

DiyVM:50元/月起-双核,2G内存,50G硬盘,香港/日本/洛杉矶机房

DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...

TTcloud:日本独立服务器促销活动,价格$70/月起,季付送10Mbps带宽

ttcloud怎么样?ttcloud是一家海外服务器厂商,运营服务器已经有10年时间,公司注册地址在香港地区,业务范围包括服务器托管,机柜托管,独立服务器等在内的多种服务。我们后台工单支持英文和中文服务。TTcloud最近推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。点击进入:ttcloud官方网站地址TTcloud拥有自...

sharktech:老牌高防服务器商,跳楼价,1G独享$70、10G共享$240、10G独享$800

不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...

expandablelistview为你推荐
activity跳转android中从一个activity跳转到另一个activity的详细步骤dnf装备代码dnf超级装备 ,极品代码是什么意思?求教!视频托管如何把视频上传到自己公司的网站上?求解···oledbdatareader根据输入信息读取数据库中的数据,总是在执行OleDbDataReader reader = cmd.ExecuteReader()时通不过,excel大写金额在Excel中如何输入数字直接显示大写金额?暴力破解rar对RAR压缩包进行解压时需要密码,使用暴力破解仍无法解码该怎么办?公众号付费阅读目前公众号有没有的付费问答平台可以提供的?公众号付费阅读如何申请微信付费阅读功能网络安全密钥网络安全密钥和wifi密码有什么区别腾讯合作伙伴大会从微信同程旅行买的机票怎么打印电子发票?
万网域名注册 西安服务器租用 cn域名价格 美国主机排名 香港服务器99idc 精品网 国外私服 dux 北京双线机房 服务器维护方案 服务器硬件防火墙 跟踪路由命令 宏讯 网通服务器 cxz lamp什么意思 双线空间 sonya e-mail ftp是什么东西 更多