本文采用一个Demo来展示Android中ExpandableListView控件的使用,如如何在组/子ListView中绑定数据源。直接上代码如下:

程序结构图:

layout目录下的 main.xml 文件源码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <!-- 我们会自己定义listview的显示方式(在另外一个布局文件里边)不用默认的方式          如果自定义listview的显示方式这里这个android:id="@id/android:list" 必须这样写 -->    <!-- android:drawSelectOnTop="false"此属性用来设置listview上的背景颜色会不会  挡住(覆盖)内容 , 如果这是为false就表示不会覆盖掉 -->     <ExpandableListView         android:id="@id/android:list"                android:layout_width="fill_parent"                 android:layout_height="wrap_content"               android:layout_weight="1"                android:drawSelectorOnTop="false"/> </LinearLayout>


包 com.andyidea.demo中ContactsActivity.java源码如下:

package com.andyidea.demo;import java.util.ArrayList;import java.util.List;import android.app.ExpandableListActivity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;public class ContactsActivity extends ExpandableListActivity {List<String> group;           //组列表List<List<String>> child;     //子列表ContactsInfoAdapter adapter;  //数据适配器    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);  //设置为无标题        setContentView(R.layout.main);        getExpandableListView().setBackgroundResource(R.drawable.default_bg);                initializeData();        getExpandableListView().setAdapter(new ContactsInfoAdapter());        getExpandableListView().setCacheColorHint(0);  //设置拖动列表的时候防止出现黑色背景    }        /**     * 初始化组、子列表数据     */    private void initializeData(){    group = new ArrayList<String>();    child = new ArrayList<List<String>>();        addInfo("Andy",new String[]{"male","138123***","GuangZhou"});    addInfo("Fairy",new String[]{"female","138123***","GuangZhou"});    addInfo("Jerry",new String[]{"male","138123***","ShenZhen"});    addInfo("Tom",new String[]{"female","138123***","ShangHai"});    addInfo("Bill",new String[]{"male","138231***","ZhanJiang"});        }        /**     * 模拟给组、子列表添加数据     * @param g-group     * @param c-child     */    private void addInfo(String g,String[] c){    group.add(g);    List<String> childitem = new ArrayList<String>();    for(int i=0;i<c.length;i++){    childitem.add(c[i]);    }    child.add(childitem);    }        class ContactsInfoAdapter extends BaseExpandableListAdapter{        //-----------------Child----------------//    @Overridepublic Object getChild(int groupPosition, int childPosition) {return child.get(groupPosition).get(childPosition);}        @Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}        @Overridepublic int getChildrenCount(int groupPosition) {return child.get(groupPosition).size();}        @Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {    String string = child.get(groupPosition).get(childPosition); return getGenericView(string);}        //----------------Group----------------//    @Overridepublic Object getGroup(int groupPosition) {return group.get(groupPosition);}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic int getGroupCount() {return group.size();}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {String string = group.get(groupPosition);  return getGenericView(string);}//创建组/子视图          public TextView getGenericView(String s) {              // Layout parameters for the ExpandableListView              AbsListView.LayoutParams lp = new AbsListView.LayoutParams(                      ViewGroup.LayoutParams.FILL_PARENT, 40);              TextView text = new TextView(ContactsActivity.this);              text.setLayoutParams(lp);              // Center the text vertically              text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);              // Set the text starting position              text.setPadding(36, 0, 0, 0);                            text.setText(s);              return text;          }  @Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn true;}        }}


最后,程序运行后截图如下:

更多相关文章

  1. Android的数据存储
  2. android调用js
  3. Android(安卓)webview监听网页对话框点击事件
  4. Android之基本样式和布局
  5. Android高手进阶教程(五)之----Android(安卓)中LayoutInflater的
  6. android 自定义 permission 权限
  7. Android获取用户已安装app列表
  8. Android(安卓)RecyclerView(和SnapHelper) 实现类似ViewPager的
  9. android 退出activity 转吖转

随机推荐

  1. android 系统编译要求,官方资料
  2. android xlistview
  3. android事件处理
  4. Android(安卓)Shape详解
  5. android 设置Button为圆形按钮
  6. android布局实例代码
  7. 相对布局控制控件居右显示
  8. QR Codes Made Easy In Android
  9. Google Android(安卓)文档笔记-Training-
  10. Android之自定义适配器