在本文中,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(安卓)4.0 新增的显示数据集的桌面控件
  2. Android视频录制、播放的两种方式
  3. android之数据库和Content Provider(二)
  4. Android底部导航栏BottomNavigatonView的使用方式
  5. Android音频数据传输
  6. android在Fragment中使用ListView显示数据总结
  7. AsyncTask进度条加载网站数据到ListView
  8. Android应用程序访问远程数据库(mysql) is not allowed to conne
  9. Android(安卓)BLE蓝牙开发中读取数据时设置Notify的方法

随机推荐

  1. Android(安卓)Launcher一些资源
  2. Android(安卓)原生项目集成 Flutter
  3. Android(安卓)笔记二(线性布局)
  4. xmlns:android的说明
  5. Android(安卓)Compatibility Package 相
  6. 第1章 老司机 要飙车 抓紧 开启你的Andro
  7. 自己DIY osc android 客户端
  8. android:gravity / android:layout_Gravi
  9. Android(安卓)Compatibility package 兼
  10. Android(安卓)文件夹简单介绍