1.Activity

 package com.example.administrator.mystudent.ExpandableListView;

 import android.app.ExpandableListActivity;
import android.os.Bundle; public class ExpandableListViewActivity extends ExpandableListActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("二级列表的使用");
//设置适配器
setListAdapter(new MyExpandableListAdapter(this));
}
}

2.adapter适配器

 package com.example.administrator.mystudent.ExpandableListView;

 import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView; import java.util.ArrayList;
import java.util.List; /**
* Created by hyang on 2017/3/1
* email 390315032@qq.com.
* 可收缩列表适配器
*/ public class MyExpandableListAdapter extends BaseExpandableListAdapter { private Context context;
private String [] group={"衣服","食品","水果"};
private String [] cloths={"衬衫","西裤","内衣"};
private String [] food={"面包","蛋糕","可乐","橙汁"};
private String [] fruits={"苹果","香蕉","草莓"}; private List<String> groupList = null;
private List<List<String>> itemList = null; protected MyExpandableListAdapter(Context context){
this.context=context;
groupList=new ArrayList<String>();
itemList=new ArrayList<List<String>>(); setListData();
} /**
* 向list中添加数据
*/
private void setListData() {
for(String s:group){
groupList.add(s);
}
List clothsList=new ArrayList();
List foodList=new ArrayList();
List fruitsList=new ArrayList(); for(String s:cloths){
clothsList.add(s);
}
for(String s:food){
foodList.add(s);
}
for(String s:fruits){
fruitsList.add(s);
} itemList.add(clothsList);
itemList.add(foodList);
itemList.add(fruitsList);
} @Override
public int getGroupCount() {
//返回组数量
return itemList.size();
} @Override
public int getChildrenCount(int groupPosition) {
//返回当前组的节点数量
return itemList.get(groupPosition).size();
} @Override
public Object getGroup(int groupPosition) {
//返回分组对象,用于一些数据传递,在事件处理时可直接取得和分组相关的数据
return groupList.get(groupPosition);
} @Override
public Object getChild(int groupPosition, int childPosition) {
//设置子节点数据
return itemList.get(groupPosition).get(childPosition);
} @Override
public long getGroupId(int groupPosition) {
return groupPosition;
} @Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
} @Override
public boolean hasStableIds() {
return false;
} @Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
//设置组显示View,这里可是设置布局文件引用
TextView view=null;
if(convertView==null){
view=new TextView(context);
}else{
view= (TextView) convertView;
}
//设置textView的显示样式
view.setTextSize(30);
view.setPadding(50,5,0,5);
//向textView设置数据
String s=groupList.get(groupPosition);
view.setText(s);
return view;
} @Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
//设置节点显示View,这里可是设置布局文件引用
TextView view=null;
if(convertView==null){
view=new TextView(context);
}else{
view= (TextView) convertView;
}
view.setTextSize(20);
view.setPadding(30,5,0,5);
//向textView设置数据
String s=itemList.get(groupPosition).get(childPosition);
view.setText(s);
return view;
} @Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}

Android简单的BaseExpandableList使用的更多相关文章

  1. Android简单逐帧动画Frame的实现(二)

    Android简单逐帧动画Frame的实现   Android简单逐帧动画Frame的实现 1.逐帧动画 即是通过播放预先排序好的图片来实现动态的画面,感觉像是放电影. 2.实现步骤: 1. 在工程里 ...

  2. Android简单文件浏览器源代码 (转)

    Android简单文件浏览器源代码 (转) activity_main .xml <LinearLayout xmlns:android="http://schemas.android ...

  3. Android简单介绍SharedPreference,内部文件,sdcard数据存储

    SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared_prefs文件夹中 使用方式 创建对象的方式有三种 Context 的 getShar ...

  4. android简单登陆和注册功能实现+SQLite数据库学习

    最近初学android,做了实验室老师给的基本任务,就是简单的登陆和注册,并能通过SQLite实现登陆,SQlLite是嵌入在安卓设备中的 好了下面是主要代码: 数据库的建立: 这里我只是建立了一个用 ...

  5. Android简单的ListViewDemo及每个控件的点击事件

    ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...

  6. Android简单加密保护自有图片资源

    现在大部分android应用的图片资源,被反编译后就可以直接拿来用,如果不想让自己的图片资源直接被反编译后使用,首先想到的应该是把图片加密.这里笔者抛砖引玉,草草写了一个对图片进行简单加密的方法,希望 ...

  7. Android 简单计算器源码....

    PS:今天算是闲着没事做了一个小型的计算器...顺便熟悉一下Android的布局,组件,以及时间监听的方法...就当是做了一个小小的练习吧...     顺便去对比了一下别人写的代码...有的使用到了 ...

  8. 也发一个自己实现的android简单文件选择器代码。支持多卡,排序

    一个很简单的文件选择器对话框,支持双sd卡,当然前提是要有sd卡..并且实现了排序效果. 只有100多行的代码,基本的思路就是用listview显示目录下的所有子文件,再判断是文件还是目录. 利用Co ...

  9. Android简单计算器

    这是很久之前做的,方法很简单,都是一些基础的,不足的是还有很多功能不够. activity_main.xml布局: <LinearLayout xmlns:android="http: ...

随机推荐

  1. python内存泄露的诊断(转)

    本篇文章非原创,转载自:http://rstevens.iteye.com/blog/828565 . 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是有了 ...

  2. pat乙级1051

    当结果中a或者b小于0,大于0.005时,保留两位小数会输出-0.00,但应输出0.00. #include <iostream> #include <math.h> usin ...

  3. Linux命令技巧:如何在Linux下重命名多个文件

    我知道我可以用mv命令重命名文件.但是当我想重命名很多文件怎么办?如果为每个文件都这么做将会是很乏味的.有没有办法一次性重命名多个文件? 在Linux中,当你想要改变一个文件名,使用mv命令就好了.然 ...

  4. Tarjan在图论中的应用(二)——用Tarjan来求割点与割边

    前言:\(Tarjan\) 求割点和割边建立在 \(Tarjan\)算法的基础之上,因此建议在看这篇博客之前先去学一学\(Tarjan\). 回顾\(Tarjan\)中各个数组的定义 首先,我们来回顾 ...

  5. C/C++语言补缺 宏- extern "C"-C/C++互调

    1. 宏中的# 宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号. 如定义好#define STRING( ...

  6. linux 查看帐号创建时间

    查看用户的home目录的创建时间 查看日志 用stat 命令,可以看到目录的三个时间.不过这个时间只是用来参考的,确定一个范围. 查看日志是最准确的方法 /var/log/auth.log ,前提是你 ...

  7. python 线程的调用方式

    python 线程的调用方式 #!/usr/bin/env python #-*- coding:utf-8 -*- # author:leo # datetime:2019/5/24 9:44 # ...

  8. Return-to-dl-resolve浅析

    本文介绍一种CTF中的高级rop技巧-Return-to-dl-resolve,不久前的0CTF中的babystack和blackhole就用到了这个技巧. 预备知识 在开始本文前希望大家能预先了解一 ...

  9. javaweb基础(31)_国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  10. “System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生 其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏

    用管理员身份运行CMD:netsh winsock reset就可以解决