ExpandableListView是一种可应用于某种环境的下拉列表。

实例代码:

package com.example.lenovo.expandablelistview_demo;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private ExpandableListView expandableListView;private MyBaseExpandableListAdapter adapter;private String[] group = {"我的好友","陌生人","黑名单"};private String[][] children = {{"小王","急急急","kl","考虑"},{"流域","蜡笔","一扭"},{"ren","du","处矛"}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.expandableListView = (ExpandableListView) this.findViewById(R.id.expandableListView);adapter = new MyBaseExpandableListAdapter();this.expandableListView.setAdapter(adapter);}private final class MyBaseExpandableListAdapter extends BaseExpandableListAdapter{@Override//返回组中元素的个数public int getGroupCount() {return group.length;}@Override//根据组的索引返回当前组中子元素的个数public int getChildrenCount(int groupPosition) {return  children[groupPosition].length;}@Override//返回指定组索引处的元素值public Object getGroup(int groupPosition) {return group[groupPosition];}@Override//返回指定组索引和子元素索引对应的值public Object getChild(int groupPosition, int childPosition) {return children[groupPosition][childPosition];}@Override//返回组的id值public long getGroupId(int groupPosition) {return groupPosition;}@Override//返回指定组中的子元素指定索引的值public long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic boolean hasStableIds() {return false;}@Override//当绘制组的View对象时自动调用的方法/*** groupPosition :组的索引值* isExpanded:当前组下的元素是否被展开**/public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {View view = View.inflate(MainActivity.this,R.layout.group_view,null);TextView textView_group  = (TextView) view.findViewById(R.id.textView_group);//得到组名String groupName = group[groupPosition];textView_group.setText(groupName);return view;}@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {View view = View.inflate(MainActivity.this,R.layout.child_view,null);TextView textView_child = (TextView) view.findViewById(R.id.textView_child);String childrenName = children[groupPosition][childPosition];textView_child.setText(childrenName);return  view;}@Override//子元素是否被选中,默认值为false,表示不能被选中public boolean isChildSelectable(int groupPosition, int childPosition) {return true;}}
}

android 之ExpandableListView详解相关推荐

  1. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  2. JMessage Android 端开发详解

    JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...

  3. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

  4. Android事件流程详解

    Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

  5. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  6. 《Android游戏开发详解》一2.16 区分类和对象

    本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.16节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社 ...

  7. Android Framework系统服务详解

    Android Framework系统服务详解 操作环境 系统:Linux (Ubuntu 12.04) 平台:高通 Android版本:5.1 PS: 符号...为省略N条代码 一.大致原理分析 A ...

  8. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

  9. Android LiveData组件详解以及LiveDataBus

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/99749323 本文出自[赵彦军的博客] 一.LiveData简介 LiveDat ...

最新文章

  1. mysql如何避免特殊字符查询_如何避免MySQL中的特殊字符?
  2. 徐博 From RankNet to LambdaRank to LambdaMART: An Overview
  3. android信鸽推送demo_【厚积薄发】手游推送方案
  4. php常用操作数组函数,PHP自带的几个实用的数组函数
  5. 电脑维修的十大原则,你都认同吗?
  6. 使用Arquillian(远程)测试OpenLiberty
  7. centos7 编译安装nginx 设置自启动服务 支持https
  8. ajax 提交 .net ispostback不执行,ASP.NET基于Ajax的Enter键提交问题分析
  9. 图像目标分割_1 概述
  10. 教程系列——用模板快速生成《客户意见反馈表》
  11. Cmake安装遇到问题
  12. Leetcode---Java
  13. 语言运算顺序题目_我的Python学习笔记:今天我学了关于Python里的运算符及运算顺序...
  14. Mysql数据库及帐号的权限查询
  15. Git(5):其他用法
  16. atitit.提升开发效率---动态语言总结
  17. 电阻电容封装买大了怎么办呢
  18. 测试电池耗电快的软件,笔记本耗电过快?Win10自带电池检测了解下
  19. SQL数据库置疑数据怎么恢复
  20. 【Python】Marshmallow:Python中的“棉花糖”

热门文章

  1. 【arduino】arudino开发ESP32 SPIFFS文件上传方法
  2. 【Android工具】最新测试谷歌play耗电情况,各种品牌安装谷歌play方法,GooglePlay...
  3. 【WSN同步捕获】无线传感器网络的同步捕获和跟踪误差的MATLAB仿真
  4. 【个人成长学习讨论小组】练习2:角色
  5. 在Windows上以服务方式运行 MSOPenTech/Redis
  6. 给Ocelot做一个Docker 镜像
  7. TypeError: decoding Unicode is not supported
  8. android安全问题(二) 程序锁
  9. Vs2008 开发Wap 网站
  10. OSPF协议工作原理