<span style="font-size:18px;">package com.qf.day09_expandablelistview03;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
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.TextView;
import android.widget.Toast; public class MainActivity extends Activity { private ExpandableListView expandableListView; private String[] groupData = {"朋友","同学","同事"}; private String[][] childData ={{"马云","王健林","马化腾"},{"老马","老王","小马"},{"许中","光头","翠"}}; private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); adapter = new MyAdapter(); expandableListView.setAdapter(adapter); //分组的点击事件
expandableListView.setOnGroupClickListener(new OnGroupClickListener() { @Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) { Toast.makeText(MainActivity.this, "==onGroupClick==", Toast.LENGTH_SHORT).show(); return false;
}
}); //子元素的点击事件
expandableListView.setOnChildClickListener(new OnChildClickListener() { @Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onChildClick=="+childData[groupPosition][childPosition], Toast.LENGTH_SHORT).show();
return false;
}
}); //分组展开的监听
expandableListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onGroupExpand==", Toast.LENGTH_SHORT).show();
}
});
//分组折叠的监听
expandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override
public void onGroupCollapse(int groupPosition) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onGroupCollapse==", Toast.LENGTH_SHORT).show();
}
}); } public class MyAdapter extends BaseExpandableListAdapter{ /**
* 获取分组的个数
*/
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupData.length;
} /**
* 获取当前下标分组里的子元素的个数
*/
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childData[groupPosition].length;
} /**
* 获取当前下标分组的数据
*/
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupData[groupPosition];
} /**
* 获取分组下标为groupPosition里子元素的下标为childPosition的数据
*/
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childData[groupPosition][childPosition];
} /**
* 获取下标为groupPosition分组的id
*/
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
} /**
* 获取分组下标为groupPosition 里的子元素下标为childPosition元素的id
*/
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
} /**
* 底层设计
* 分组和子元素是否有稳定的id 底层的数据改变不会影响他们
*/
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
} /**
* 分组的视图对象
* 参数1:分组的位置下标
* 参数2:当前分组是否展开
* 参数3:复用的视图
* 参数4:指明父控件 ExpandableListView
*/
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_group, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_group);
tv.setText(groupData[groupPosition]); return view;
} /**
* 子元素的视图
*
* 参数1:当前分组的下标
* 参数2:当前子元素的下标
* 参数3:是否是最后一个子元素视图
* 参数4:子元素复用视图
* 参数5:指明父控件 ExpandableListView
*/
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_child, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_child);
tv.setText(childData[groupPosition][childPosition]); return view;
} /**
* 子元素能否被点击 false不能被点击 true可以被点击
*/
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
} } } </span>

09 ExpanableListView 的代码例子的更多相关文章

  1. 30个php操作redis常用方法代码例子

    From: http://www.jb51.net/article/51884.htm 这篇文章主要介绍了30个php操作redis常用方法代码例子,本文其实不止30个方法,可以操作string类型. ...

  2. 30 个 php 操作 redis 常用方法代码例子

    这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型. list 类型和 set 类型的数据 , 需要的朋友可以参 ...

  3. 最小包围多边形(凸包;最小包围点集)——C代码例子

    本文来自:http://alienryderflex.com/smallest_enclosing_polygon/ 这个C代码例子需要一群2维点集,如下图所示: 要获得包含这些点的最小多边形如下图所 ...

  4. 捕鱼达人代码例子下载地址 mac版

    捕鱼达人代码例子下载地址  mac版: http://pan.baidu.com/share/link?shareid=1431898404&uk=3189484501

  5. 捕鱼达人代码例子下载地址 Win版

    捕鱼达人代码例子下载地址 Win版:: http://pan.baidu.com/share/link?shareid=1601576904&uk=3189484501

  6. 一些 NSArray 的基本操作代码例子

    一些 NSArray 的基本操作代码例子 数组可以说是软件开发人员每天都要面对的基本操作,下面就分享一些 NSArray 的基本操作代码例子供苹果开发初学者参考,每段代码第一行会以注释方式说明该段代码 ...

  7. jeecg 主-附表生成代码例子

    jeecg 主-附表生成代码例子 - CSDN博客https://blog.csdn.net/u010411264/article/details/51243277 JEECG Online Codi ...

  8. 神经网络:caffe特征可视化的代码例子

    caffe特征可视化的代码例子 不少读者看了我前面两篇文章 总结一下用caffe跑图片数据的研究流程 deep learning实践经验总结2--准确率再次提升,到达0.8.再来总结一下 之后.想知道 ...

  9. 爱漂泊人生 30个php操作redis常用方法代码例子

    http://www.justwinit.cn/post/8789/ 背景:redis这个新产品在sns时很火,而memcache早就存在, 但redis提供出来的功能,好多网站均把它当memcach ...

随机推荐

  1. [bzoj4850][Jsoi2016]灯塔

    来自FallDream的博客,未经允许,请勿转载,谢谢. JSOI的国境线上有N一座连续的山峰,其中第ii座的高度是hi??.为了简单起见,我们认为这N座山峰排成了连续一条 直线.如果在第ii座山峰上 ...

  2. [Noi2014]购票

    来自FallDream 的博客,未经允许,请勿转载,谢谢. 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会.        全国的 ...

  3. bzoj3048[Usaco2013 Jan]Cow Lineup 尺取法

    3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 225  Solved: 159[Subm ...

  4. quartz入门详解

    http://www.cnblogs.com/monian/p/3822980.html http://www.blogjava.NET/baoyaer/articles/155645.html 另: ...

  5. JavaScript数据结构和算法----栈

    前言 栈是一种遵循后进先出(LIFO)原则的有序集合,新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另外一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底.可以想象桌上的一叠书,或者厨房里的 ...

  6. gdb调试的基本使用

    GDB调试 启动程序准备调试 GDB yourpram 或者 先输入GDB 然后输入 file yourpram 然后使用run或者r命令开始程序的执行,也可以使用 run parameter将参数传 ...

  7. thinkphp零碎小知识

    在使用thinkphp搭建后台的时候,有很多的参数需要去配置,有的记不住还要去查找,这里把一些基本的参数整理一下,还有些零碎的知识点,与大家共勉,希望能方便大家. 友情提示:这些配置是 thinkph ...

  8. MySQL/MariaDB 在插入数据的时候提示 Incorrect string value

    现象 今天开新工程,建表的时候弹出这玩意: what's this? 看起来好像是说我传入的内容不对? 可是仔细看看内容,没乱码,标准的中文字符串.想来是编码问题. 经过修改编码后,解决了问题. 解决 ...

  9. 安利三款提升幸福感的chrome插件

    谷歌访问助手 chrome浏览器一直是各大码农推荐的比较好用的浏览器,速度快.插件多. 但是由于众所周知的原因导致了谷歌账号同步.扩展商店访问慢甚至打不开的情况. 谷歌访问助手就是用来解决此问题的. ...

  10. JavaScript 流程语句知识脑图