main.xml

View Code

<?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"><ExpandableListView android:id="@+id/elistview"        android:layout_width="fill_parent"        android:layout_height="wrap_content" /></LinearLayout>

MyExpandableListAdapter.java   (适配器)

View Code

package org.lxh.demo;

import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;// 继承BaseExpandableListAdapter并覆写类中的抽象方法public class MyExpandableListAdapter extends BaseExpandableListAdapter {// 组名称    public String[] groups = { "我的好友", "家人", "同事", "黑名单" };    // 定义组项    public String[][] children = {            { "董鸣楠", "王月清", "周艳军" },             { "父亲", "母亲" }, { "刘宏伟", "李祺", "刘媛" },            { "票贩子", "造假商" } };        // 保存上下文对象    private Context context = null;        // 构造方法接收    public MyExpandableListAdapter(Context context) {                this.context = context;    }    @Override   // 取得指定的子项    public Object getChild(int groupPosition, int childPosition) {    return this.children[groupPosition][childPosition];    }

    @Override   // 取得子项ID    public long getChildId(int groupPosition, int childPosition) {    return childPosition;    }

// 自定义方法,建立文本    public TextView buildTextView() {        // 指定布局参数        AbsListView.LayoutParams param = new AbsListView.LayoutParams(                ViewGroup.LayoutParams.FILL_PARENT, 35);// 创建TextView        TextView textView = new TextView(this.context);                        textView.setLayoutParams(param);    // 设置布局参数        textView.setTextSize(15.0f);        // 设置文字大小        textView.setGravity(Gravity.LEFT);    // 左对齐        textView.setPadding(40, 8, 3, 3);    // 间距        return textView;                    // 返回组件

    }

    @Override   // 返回子项组件    public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {// 创建TextView        TextView textView = buildTextView();    // 设置显示文字        textView.setText(getChild(groupPosition,childPosition).toString());                            return textView;

    }

    @Override   // 取得子项个数    public int getChildrenCount(int groupPosition) {    // 取得子项个数        return this.children[groupPosition].length;                        }

    @Override   // 取得组对象    public Object getGroup(int groupPosition) {                        return this.groups[groupPosition];    }

    @Override   // 取得组个数    public int getGroupCount() {                                    return this.groups.length;    }

    @Override   // 取得组ID    public long getGroupId(int groupPosition) {                        return groupPosition;    }

    @Override    // 取得组显示组件    public View getGroupView(int groupPosition, boolean isExpanded,            View convertView, ViewGroup parent) {        // 建立组件        TextView textView = buildTextView();// 设置文字        textView.setText(this.getGroup(groupPosition).toString());    return textView;    }

    @Overridepublic boolean hasStableIds() {return true;     }

    @Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;        }

}

MyExpandableListViewDemo.java

View Code

package org.lxh.demo;

import android.app.Activity;import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.View;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.ExpandableListView.OnGroupClickListener;import android.widget.ExpandableListView.OnGroupCollapseListener;import android.widget.ExpandableListView.OnGroupExpandListener;import android.widget.Toast;

public class MyExpandableListViewDemo extends Activity {// 定义树型组件    private ExpandableListView elistview = null;    // 定义适配器对象    private ExpandableListAdapter adapter = null;            

    @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 默认布局管理器        super.setContentView(R.layout.main);     // 取得组件        this.elistview = (ExpandableListView) super.findViewById(R.id.elistview);     // 实例化适配器        this.adapter = new MyExpandableListAdapter(this);    // 设置适配器        this.elistview.setAdapter(this.adapter);    // 注册上下文菜单        super.registerForContextMenu(this.elistview);         // 设置子项单击事件        this.elistview.setOnChildClickListener(new OnChildClickListenerImpl());            // 设置组项单击事件        this.elistview.setOnGroupClickListener(new OnGroupClickListenerImpl());            // 关闭分组事件        this.elistview.setOnGroupCollapseListener(new OnGroupCollapseListenerImpl());         // 展开分组事件        this.elistview.setOnGroupExpandListener(new OnGroupExpandListenerImpl());                 }

private class OnChildClickListenerImpl implements OnChildClickListener {        @Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {// 显示提示框            Toast.makeText(                    MyExpandableListViewDemo.this,                    "子选项被选中,groupPosition = " + groupPosition                            + ",childPosition = " + childPosition,                    Toast.LENGTH_SHORT).show();                return false;        }

    }

private class OnGroupClickListenerImpl implements OnGroupClickListener {

        @Overridepublic boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {// 显示提示框            Toast.makeText(MyExpandableListViewDemo.this,                    "分组被选中,groupPosition = " + groupPosition,                    Toast.LENGTH_SHORT).show();                return false;        }

    }

private class OnGroupCollapseListenerImpl implements            OnGroupCollapseListener {

        @Overridepublic void onGroupCollapse(int groupPosition) {// 显示提示框            Toast.makeText(MyExpandableListViewDemo.this,                    "关闭分组,groupPosition = " + groupPosition,                     Toast.LENGTH_SHORT).show();                                        }

    }

private class OnGroupExpandListenerImpl implements OnGroupExpandListener {

        @Overridepublic void onGroupExpand(int groupPosition) {// 显示提示框            Toast.makeText(MyExpandableListViewDemo.this,                    "打开分组,groupPosition = " + groupPosition,                     Toast.LENGTH_SHORT).show();                                        }    }    @Overridepublic void onCreateContextMenu(ContextMenu menu, View view,            ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, view, menuInfo);        ExpandableListView.ExpandableListContextMenuInfo info =             (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;// 取得操作的菜单项        int type = ExpandableListView.getPackedPositionType(info.packedPosition); // 取得菜单项所在的菜单组        int group = ExpandableListView.getPackedPositionGroup(info.packedPosition); // 取得子菜单项的索引        int child = ExpandableListView.getPackedPositionChild(info.packedPosition); // 显示提示框        Toast.makeText(MyExpandableListViewDemo.this,                "type = " + type + ",group = " + group + ",child = " + child,                Toast.LENGTH_SHORT).show();                        }}

AndroidManifest.xml

View Code

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="org.lxh.demo"      android:versionCode="1"      android:versionName="1.0"><uses-sdk android:minSdkVersion="5" />

<application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".MyExpandableListViewDemo"                  android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

</application></manifest>

转载于:https://www.cnblogs.com/androidsj/archive/2012/03/24/2415911.html

控件:ExpandableListView --- 树型组件相关推荐

  1. Vue实战篇十七:用树型组件实现一个文档目录结构

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  2. flex html 控件 开源,flexlib开源组件库

    ComponentList FlexLib组件列表. FlexLib组件列表 本wiki页面包含了在当前构建的flexlib中所有组件的列表.添加新组件FlexLib之后,你应该编辑这个页面,填写组件 ...

  3. OpenCASCADE:常用Inspector控件之树视图

    OpenCASCADE:常用Inspector控件之树视图 树视图首选项 此控件显示所调查 OCCT 元素的表示层次结构,例如DFBrowser的 TDocStd_Application,请参阅概述. ...

  4. Qt Designer设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承,styleSheet设置样式。

    话不多说,先看效果图,完美的设置背景. 如果正常设置背景的话其它的组件都会产生变化. 这是因为组件的继承. 最开始的面板就是父类,我们新增加的组件就是子类,默认都是继承的. 继承也有继承的好处. 比如 ...

  5. Android UI控件----ExpandableListView的基本用法

    ExpandableListView介绍 ExpandableListView的引入 ExpandableListView可以显示一个视图垂直滚动显示两级列表中的条目,这不同于列表视图(ListVie ...

  6. 一款不错的打印控件,SailPrint打印组件简介。

    SailPrint打印组件是一套VCL打印控件.目前最新版本是3.0,可以打印DBGrid,StringGrid,ListView以及直接打印数据源.SailPrint有以下几大特点: 一.SailP ...

  7. FineUI控件之树的应用(二)

    一.Tree控件应用 <f:PageManager ID="PageManager1" runat="server" /><f:Tree ID ...

  8. dorado Tip控件:信息提示组件

    //@Bind #operate.onClick 点击后弹出信息提示框 !function(self,arg){var tip = view.get("#tip");tip.set ...

  9. 封装html ui 控件,聊聊前端 UI 组件:组件设计

    本文首发于欧雷流.由于我会时不时对文章进行补充.修正和润色,为了保证所看到的是最新版本,请阅读原文. 在本系列文章<聊聊前端 UI 组件:组件体系>中初步说明了 UI 组件的架构设计,本文 ...

最新文章

  1. HotSpot 虚拟机的算法实现
  2. 解决复制虚拟机时候网络不从eth0开始问题
  3. github关联域名,创建个人网站教程终结篇
  4. UWA DAY 2018 精彩议题全曝光!
  5. php网站漏洞检测对sql注入漏洞防护
  6. C++ Stacks(堆栈)
  7. vue实战(9):总结二
  8. Percona XtraDB cluster--第一部分:XtraDB cluster安装 (Centos7)
  9. c语言中c4700在哪个位置,C语言单链表问题。。高手来啊warning C4700
  10. Mysql 添加用户 授权等操作
  11. 是不正确的python语句_Python if语句读取不正确
  12. tar、tar.gz、tar.Z、tgz、bz2、bin软件包的安装
  13. ostringstream的使用方法
  14. AR 第一大单,微软 219 亿美元为美军打造高科技头盔
  15. 关于android studio menu键的问题
  16. 程序员常用资源工具集合(建议收藏)
  17. 【微信小程序】小程序功能开发
  18. mac虚拟机开发android,安卓手机原来也能安装 Windows和macOS 系统?!
  19. 鸿蒙系统桌面壁纸,好桌道壁纸横空出世 万千壁纸随心换
  20. Moonriver史上首次全球黑客松正式开启,15万美元奖金持续资助开发者建设Moonriver生态

热门文章

  1. /storage/emulated/0/Pictures/eWorld/1644986847.jpeg: open failed: ENOENT (No such file or directory)
  2. 程序猿内功—系统内存管理
  3. CHY Web 3 Move
  4. 电脑热键冲突怎么修改?Windows11热键设置更改方法
  5. java仿照微信聊天记录时间格式显示
  6. OllyDbg基础教程
  7. Monkey测试常用命令
  8. MATLAB离散函数和连续函数的绘制
  9. echarts HTML折线图设置
  10. 龙芯1B:pwm的使用例程