ExpandableListActivity使用 使用方法(可以和ListActivity进行对比) 创建一个Activity类继承ExpandableListActvity 三个layout 主布局 ( 注意这里2个id都是android内置的 不是+id包含<ExpandableListView> 注意其中android:id="@id/android:list" 还有一个android:drawSelectorOnTop="false"(选中时是否遮盖文字) <TextView android:id="@id/android:empty"> 当无数据时 一级目录布局 二级目录布局(条目item样式) 创建Adapter 将simpleExpandableListAdapter对象设置给当前ExpandableListActivity setListAdapter(adapter); SimpleExpandableListAdapter使用 为ExpandableListActivity提供数据 //定义List 为一级条目提供数据 List<Map<String, String>> groups=new ArrayList<Map<String, String>>(); 需要几个条目 生成几个Map对象 Map<String, String> m1=new HashMap<String, String>(); m1.put(group, Group1); m2.put(group, Group2); groups.add(m1); groups.add(m2);
//定义List 设置二级子条目 一个子条目一个List 一个项 一个Map 方法同上 建List( child1 child2)和Map( child:child1Data1; child:child1Data2)
//定义一个List 存储所有二级条目数据 *List<List<Map<String, String>>> childs= new ArrayListM<List<Map<String, String>>>(); childs.add( child1); childs.add( child2);
//生成一个SimpleExpandableListAdapter对象 new SimpleExpandableListAdapter(...); 参数包括 (context上下文对象,一级条目List对象,一级条目布局, new String[]{" groups"})指定一级条目数据的key,new int[]{R.id.groupTo}指定一级条目数据显示的控件id, 二级条目的数据 childs,二级条目布局,二级条目数据key(child),二级条目控件id}
下图是实现的截图:
这个实例用到三个布局文件: 第一个布局文件---主框架布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"         android:orientation="vertical"         android:layout_width="match_parent"          android:layout_height="match_parent"         >      <ExpandableListView android:id="@id/android:list"               android:layout_width="match_parent"                android:layout_height="match_parent"               android:drawSelectorOnTop="false"/>      <TextView android:id="@id/android:empty"               android:layout_width="match_parent"                android:layout_height="match_parent"               android:text="No data"/> </LinearLayout>

第二个布局文件---组布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/group"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:paddingLeft="60px"        android:paddingTop="10px"        android:paddingBottom="10px"        android:textSize="26sp"        android:text="No data"/>    </LinearLayout>

第三个布局文件---子视图布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >     <TextView        android:id="@+id/child"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:paddingLeft="50px"        android:paddingTop="5px"        android:paddingBottom="5px"        android:textSize="20sp"        android:text="No data"/>    </LinearLayout>

具体的实现代码如下:
public class ExpandableListActivity_Activity extends ExpandableListActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_expandable_list_activity_);//定义一个List,这个List为一级条目提供数据List<Map<String, String>> group=new ArrayList<Map<String,String>>();Map<String, String> group1=new HashMap<String, String>();group1.put("group", "group1");Map<String, String> group2=new HashMap<String, String>();group2.put("group", "group2");group.add(group1);group.add(group2);//定义一个List,这个List为第一个一级条目提供二级条目数据List<Map<String, String>> child1=new ArrayList<Map<String,String>>();Map<String, String> child1Data1=new HashMap<String, String>();child1Data1.put("child", "child1Data1");Map<String, String> child1Data2=new HashMap<String, String>();child1Data2.put("child", "child1Data2");child1.add(child1Data1);child1.add(child1Data2);//定义一个List,这个List为第二个一级条目提供二级条目数据List<Map<String, String>> child2=new ArrayList<Map<String,String>>();Map<String, String> child2Data1=new HashMap<String, String>();child2Data1.put("child", "child2Data1");Map<String, String> child2Data2=new HashMap<String, String>();child2Data2.put("child", "child2Data2");child2.add(child2Data1);child2.add(child2Data2);//定义一个List,这个List存储所有的二级条目数据List<List<Map<String, String>>> childs=new ArrayList<List<Map<String,String>>>();childs.add(child1);childs.add(child2);//生成一个SimpleExpandableListAdapter对象/* * 1.context * 2.一级条目的数据 * 3.用来设置一级条目样式的布局文件 * 4.指定一级条目数据的key * 5.指定一级条目数据显示控件的id * 6.指定二级条目的数据 * 7.设置二级条目样式的布局文件 * 8.指定二级条目数据的key * 9.指定二级条目数据显示控件的id */SimpleExpandableListAdapter selaListActivity=new SimpleExpandableListAdapter(this, group, R.layout.group, new String[]{"group"}, new int[]{R.id.group}, childs,R.layout.child,new String[] {"child"}, new int[]{R.id.child});setListAdapter(selaListActivity);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_expandable_list_activity_,menu);return true;}}



更多相关文章

  1. Android(安卓)数据存储02之文件读写
  2. Android(安卓)中文 API (102)—— CursorAdapter
  3. Android短信数据库简析
  4. Android(安卓)Webkit 解读 WebKit – WebKit For Android
  5. Android快速开发框架
  6. android ListView没有数据时信息显示
  7. 【Android】Android(安卓)联系人数据库浅析之通话记录
  8. Android(安卓)Battery 分析
  9. Android学习目录

随机推荐

  1. Android利用RecognizerIntent识别语音并
  2. android 获取当前运行进程的名称
  3. Android 中获取图片占内存的大小
  4. android Httpclient 设置timeout
  5. Android消息通知Totast的实现
  6. android关于fragment的构造函数用法建议
  7. Android实践 -- Android wifi 设置相关
  8. Android(安卓)ViewStub
  9. Android Dialog触摸对话框外部让其消失的
  10. android 项目源码