android可展开(收缩)的列表ListView(ExpandableListView)=_第1页
android可展开(收缩)的列表ListView(ExpandableListView)=_第2页
android可展开(收缩)的列表ListView(ExpandableListView)=_第3页
android可展开(收缩)的列表ListView(ExpandableListView)=_第4页
android可展开(收缩)的列表ListView(ExpandableListView)=_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、android可展开(收缩)的列表ListView(ExpandableListView)每天都在用QQ聊天,今天突然一想,android怎么实现列表的分组展开呢?看了看api,发现其实现过程也很简单。先看一下最终效果吧!1、首先创建我们的Activity,继承 android.app.ExpandableListActivity,直接看代码吧。1. package com.ideasandroid.sample;2. import android.app.ExpandableListActivity;3. import android.os.Bundle;4. import com.idea

2、sandroid.sample.adapter.IdeasExpandableListAdapter;5.6. /*7. * author IdeasAndroid8. * 可展开(收缩)列表示例9. */10. public class IdeasExpandableListView extends ExpandableListActivity 11.     Override12.     public void onCreate(Bundle savedInstanceState) 13.       

3、60; super.onCreate(savedInstanceState);14.         /设置列表适配器IdeasExpandableListAdapter15.         setListAdapter(new IdeasExpandableListAdapter(this);16.     17. 复制代码2、创建适配器,继承android.widget.BaseExpandableListAdapter。1. packag

4、e com.ideasandroid.sample.adapter;2.3. import java.util.ArrayList;4. import java.util.List;5. import android.content.Context;6. import android.view.Gravity;7. import android.view.View;8. import android.view.ViewGroup;9. import android.widget.AbsListView;10. import android.widget.BaseExpandableListAd

5、apter;11. import android.widget.TextView;12.13. /*14. * author IdeasAndroid 15. * 可展开(收缩)列表示例16. */17. public class IdeasExpandableListAdapter extends BaseExpandableListAdapter 18.19.         private Context mContext = null;20.         / 测试数据,开发时可能来自数据库,网

6、络.21.         private String groups = "家人", "朋友", "同事" ;22.         private String familis = "老爸", "老妈", "妹妹" ;23.         private String friends = "小李", "张三",

7、"李四" ;24.         private String colleagues = "陈总", "李工", "李客户" ;25.26.         private List<String> groupList = null;27.         private List<List<String>> itemList = null;28.29. &#

8、160;       public IdeasExpandableListAdapter(Context context) 30.                 this.mContext = context;31.                 groupList = new ArrayList<String>();32.          

9、;       itemList = new ArrayList<List<String>>();33.                 initData();34.         35.36.         /*37.          * 初始化数据,将相关数据放到List中,方便处理38.    

10、;      */39.         private void initData() 40.                 for (int i = 0; i < groups.length; i+) 41.                         groupList.add(groupsi);42

11、.                 43.                 List<String> item1 = new ArrayList<String>();44.                 for (int i = 0; i < familis.length; i+) 45.     

12、0;                   item1.add(familisi);46.                 47.48.                 List<String> item2 = new ArrayList<String>();49.         &#

13、160;       for (int i = 0; i < friends.length; i+) 50.                         item2.add(friendsi);51.                 52.53.                

14、List<String> item3 = new ArrayList<String>();54.                 for (int i = 0; i < colleagues.length; i+) 55.                         item3.add(colleaguesi);56.       &

15、#160;         57.58.                 itemList.add(item1);59.                 itemList.add(item2);60.                 itemList.add(item3);61.      

16、;   62.63.         public boolean areAllItemsEnabled() 64.                 return false;65.         66.67.         /*68.          * 设置子节点对象,在事件处理时返回的对象,可存放一些数据69. &#

17、160;        */70.         public Object getChild(int groupPosition, int childPosition) 71.                 return itemList.get(groupPosition).get(childPosition);72.         73.74.     &

18、#160;   public long getChildId(int groupPosition, int childPosition) 75.                 return childPosition;76.         77.78.         /*79.          * 字节点视图,这里我们显示一个文本对象80.   &#

19、160;      */81.         public View getChildView(int groupPosition, int childPosition,82.                         boolean isLastChild, View convertView, ViewGroup parent) 83.       

20、0;         TextView text = null;84.                 if (convertView = null) 85.                         text = new TextView(mContext);86.            

21、    else 87.                         text = (TextView) convertView;88.                 89.                 / 获取子节点要显示的名称90.        

22、;         String name = (String) itemList.get(groupPosition).get(childPosition);91.                 / 设置文本视图的相关属性92.                 AbsListView.LayoutParams lp = new AbsListView.LayoutParams(93. 

23、0;                               ViewGroup.LayoutParams.FILL_PARENT, 40);94.                 text.setLayoutParams(lp);95.                 text.se

24、tTextSize(18);96.                 text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);97.                 text.setPadding(45, 0, 0, 0);98.                 text.setText(name);99

25、.                 return text;100.         101.102.         /*103.          * 返回当前分组的字节点个数104.          */105.         public int getChildre

26、nCount(int groupPosition) 106.                 return itemList.get(groupPosition).size();107.         108.109.         /*110.          * 返回分组对象,用于一些数据传递,在事件处理时可直接取得和分组相关的数据111.    

27、      */112.         public Object getGroup(int groupPosition) 113.                 return groupList.get(groupPosition);114.         115.116.         /*117.       &#

28、160;  * 分组的个数118.          */119.         public int getGroupCount() 120.                 return groupList.size();121.         122.123.         public long getG

29、roupId(int groupPosition) 124.                 return groupPosition;125.         126.127.         /*128.          * 分组视图,这里也是一个文本视图129.          */130.   &

30、#160;     public View getGroupView(int groupPosition, boolean isExpanded,131.                         View convertView, ViewGroup parent) 132.                 TextView text = null;133.  

31、;               if (convertView = null) 134.                         text = new TextView(mContext);135.                 else 136.          

32、              text = (TextView) convertView;137.                 138.                 String name = (String) groupList.get(groupPosition);139.            

33、    AbsListView.LayoutParams lp = new AbsListView.LayoutParams(140.                                 ViewGroup.LayoutParams.FILL_PARENT, 40);141.                 text.setL

34、ayoutParams(lp);142.                 text.setTextSize(18);143.                 text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);144.                 text.setPadding(36, 0, 0

35、, 0);145.                 text.setText(name);146.                 return text;147.         148.149.         /*150.          * 判断分组是否为空,本示例中数据是固定的,所以不会

36、为空,我们返回false 151.          * 如果数据来自数据库,网络时,可以把判断逻辑写到这个方法中,如果为空152.          * 时返回true153.          */154.         public boolean isEmpty() 155.                 return false;156.         157.158.         /*159.          * 收缩列表时要处理的东西都放这儿160.          */161.         public void onGroupCollapsed(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论