expandablelistviewExpandableListView如何做出拉伸越界效果?

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

Android中ExpandableListView如何从数据读取数据

expandablelistivew使用的数据分为两级,这两级可以没有任何关系。

提示一下: 1.一级用一套数据、二级用另外一套数据也可以,两套数据没有什么明确上的规定一定要有关系。

2.一级数据给adapter的getGroupView使用,二级数据给adapter的getChildView使用。

3.之所以糊涂是因为我们expandablelistivew使用的数据源一般都是一套数据,为了方便,二级数据会被包含在一级数据里面,在getChildView使用二级数据时,一般现货去到对应的一级数据,然后从一级数据中拿到对应的二级数据。

4.初学者为避免出错,检查一下继承adapter时,重写的一些方法返回值有没有错误,避免反悔值有误,导致显示异常,比如getCount()方法,一级是多少就返回多少,不要默认给个0或者其他错误信息的数据。

expandableListView中怎么得到其中的一个子控件

BaseExpandableListAdapter adapter = (BaseExpandableListAdapter) getAdapter(); adapter.getChildView(groupPosition, childPosition, false, null, null);

android 的ExpandableListView下面怎么样放置进度条?

1. 先弄一个TextView作为指示器放在ListView的上面,跟列表上缘平齐。

2. 处理列表的上下滚动回调: Java代码
  1. if(第一行是group){
  2. if(第二行也是group)隐藏指示器;
  3. elseif(第二行是第一行展开的第一个child)显示指示器;
  4. }
  5. else{
  6. if(第二行是group且第一行显示不完整时)隐藏指示器;
  7. }
if(第一行是group){ if(第二行也是group) 隐藏指示器; else if(第二行是第一行展开的第一个child) 显示指示器; } else { if(第二行是group 且第一行显示不完整时) 隐藏指示器; }

就这样了,是吧?

Java代码

  1. lassGroupHeaderIndicatorextendsTextView
  2. implementsOnScrollListener{
  3. @Override
  4. publicvoidonScroll(AbsListViewview,intfirstVisibleItem,
  5. isibleItemCount,inttotalItemCount){
  6. //TODOAuto-generatedmethodstub
  7. ExpandableListViewlistView=(ExpandableListView)view;
  8. //当前第一行归属的组ID
  9. intgid=ExpandableListView.getPackedPositionGroup(listView.getExpandableListPosition(firstVisibleItem));
  10. //当前第一行的子ID
  11. intcid=ExpandableListView.getPackedPositionChild(listView.getExpandableListPosition(firstVisibleItem));
  12. //当前第二行的子ID
  13. intnid=ExpandableListView.getPackedPositionChild(listView.getExpandableListPosition(firstVisibleItem+1));
  14. BuddiesListAdapteradapter=(BuddiesListAdapter)listView.getExpandableListAdapter();
  15. Stringgtitle=(gid>-1)?adapter.getGroup(gid).toString():"";
  16. //如果第一行和第二行都是组header,不需要显示
  17. if(cid==-1&&nid==-1){
  18. this.setVisibility(View.GONE);
  19. }
  20. else{
  21. //当前真的是一个child,而且下一行是group
  22. if(nid==-1&&cid>=0){
  23. this.setVisibility(View.GONE);
  24. return;
  25. }
  26. this.setVisibility(View.VISIBLE);
  27. this.setText(gtitle);
  28. this.postInvalidate();
  29. }
  30. }
  31. }
public class GroupHeaderIndicator extends TextView implements OnScrollListener { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub ExpandableListView listView = (ExpandableListView)view; //当前第一行归属的组ID int gid = ExpandableListView.getPackedPositionGroup(listView.getExpandableListPosition(firstVisibleItem)); //当前第一行的子ID int cid = ExpandableListView.getPackedPositionChild(listView.getExpandableListPosition(firstVisibleItem)); //当前第二行的子ID int nid = ExpandableListView.getPackedPositionChild(listView.getExpandableListPosition(firstVisibleItem+1)); BuddiesListAdapter adapter=(BuddiesListAdapter)listView.getExpandableListAdapter(); String gtitle=(gid>-1)?adapter.getGroup(gid).toString():""; //如果第一行和第二行都是组header,不需要显示 if(cid==-1 && nid==-1){ this.setVisibility(View.GONE); } else { //当前真的是一个child,而且下一行是group if(nid==-1 && cid>=0){ this.setVisibility(View.GONE); return; } this.setVisibility(View.VISIBLE); this.setText(gtitle); this.postInvalidate(); } } }

一切就这么简单,然后看看它放的位置是:

Xhtml代码

  1. <FrameLayout
  2. xmlns:android=" /apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:padding="8.0dip"
  6. android:layout_weight="1.0">
  7. <ExpandableListView
  8. android:id="@id/buddies_list"
  9. android:scrollbars="vertical"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"
  12. android:layout_marginLeft="0.0dip"
  13. android:drawSelectorOnTop="false"
  14. android:scrollingCache="true"
  15. android:layout_weight="1.0"
  16. android:fastScrollEnabled="false"
  17. android:footerDividersEnabled="true"
  18. android:cacheColorHint="#00000000"
  19. android:groupIndicator="@drawable/expander_group"
  20. style="@style/Widget.ListViewGreen"mce_style="@style/Widget.ListViewGreen"
  21. />
  22. &.demo.ui.GroupHeaderIndicator
  23. android:id="@id/buddies_group_indicator"
  24. android:textColor="#333333"
  25. android:gravity="left|center"
  26. android:paddingLeft="32.0dip"
  27. android:layout_width="fill_parent"
  28. android:layout_height="44.0dip"
  29. android:background="@drawable/expand_group_bar"
  30. />
  31. </FrameLayout>
<FrameLayout xmlns:android=" /apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="8.0dip" android:layout_weight="1.0"> <ExpandableListView android:id="@id/buddies_list" android:scrollbars="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="0.0dip" android:drawSelectorOnTop="false" android:scrollingCache="true" android:layout_weight="1.0" android:fastScrollEnabled="false" android:footerDividersEnabled="true" android:cacheColorHint="#00000000" android:groupIndicator="@drawable/expander_group" style="@style/Widget.ListViewGreen" mce_style="@style/Widget.ListViewGreen" /> &.demo.ui.GroupHeaderIndicator android:id="@id/buddies_group_indicator" android:textColor="#333333" android:gravity="left|center" android:paddingLeft="32.0dip" android:layout_width="fill_parent" android:layout_height="44.0dip" android:background="@drawable/expand_group_bar" /> </FrameLayout>

我为了省事,直接从TextView中派生出这个指示器,其实你可以更复杂点,从一个ViewGroup之类的东西来做出更多的效果。

细心的朋友可以发现了,在QQ中,当上移列表时,有一个效果是下一个group header将指示器给推出屏幕的,图省事,我没这样做,留给兄弟你去扩展了。

此外,反编译QQ的代码可知,其实它的实现是自己做了一个叫 IphoneTreeView的类,继承了ExpandableListView,这样做更灵活也更好,同样,如果要实现更完美的效果,还有很多事情要做的。

ExpandableListView如何做出拉伸越界效果?

简单,你在外面包一个scroolview,然后自定义ExpandableListView,并且重写下面的方法,其他的不用管,@Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); System.out.println("expandSpec = " + expandSpec); super.onMeasure(widthMeasureSpec, expandSpec); }

CloudCone2核KVM美国洛杉矶MC机房机房2.89美元/月,美国洛杉矶MC机房KVM虚拟架构2核1.5G内存1Gbps带宽,国外便宜美国VPS七月特价优惠

近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...

2021年7月最新洛杉矶CN2/香港CN2 vps套餐及搬瓦工优惠码 循环终身优惠6.58%

搬瓦工怎么样?2021年7月最新vps套餐推荐及搬瓦工优惠码整理,搬瓦工优惠码可以在购买的时候获取一些优惠,一般来说力度都在 6% 左右。本文整理一下 2021 年 7 月最新的搬瓦工优惠码,目前折扣力度最大是 6.58%,并且是循环折扣,续费有效,可以一直享受优惠价格续费的。搬瓦工优惠码基本上可能每年才会更新一次,大家可以收藏本文,会保持搬瓦工最新优惠码更新的。点击进入:搬瓦工最新官方网站搬瓦工...

香港站群多ip服务器多少钱?零途云香港站群云服务器怎么样?

香港站群多ip服务器多少钱?想做好站群的SEO优化,最好给每个网站都分配一个独立IP,这样每个网站之间才不会受到影响。对做站群的站长来说,租用一家性价比高且提供多IP的香港多ip站群服务器很有必要。零途云推出的香港多ip站群云服务器多达256个IP,可以满足站群的优化需求,而且性价比非常高。那么,香港多ip站群云服务器价格多少钱一个月?选择什么样的香港多IP站群云服务器比较好呢?今天,小编带大家一...

expandablelistview为你推荐
郭列90后三无人物,如何创业?如何去实现人生价值?flash实例FLASH中实例是个什么概念,真心期待着!!!期待好心人,感恩!希望大家多讨论listviewitem安卓如何添加Listview的item?公众号付费阅读目前公众号有没有的付费问答平台可以提供的?averagesPoisson-Arrivals-See-Time-Averages是什么意思qq管家官网腾讯手机管家官网防盗页面地址是什么?知识百科java程序员招聘java工程师待遇如何微信网页版登陆首页微信网页版怎么用?微信网页版怎么登陆?云办公平台Gleasy云办公平台解决了哪些问题?腾讯合作伙伴大会腾讯位置服务是什么?
windows虚机 天津服务器租赁 vps动态ip 3322动态域名 火山主机 加勒比群岛 美国翻墙 rackspace 新世界电讯 台湾谷歌网址 adroit 33456 湖南idc 网页加速 xuni 徐州电信 国外免费云空间 cdn服务 web是什么意思 赵 更多