ExpandableListView可以用来表现多层级的listView,本文主要是ExpandableListView的一个简单实现

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayout android:layout_height="50dip"android:layout_width="match_parent"android:background="#297DC6"><TextView android:layout_marginLeft="100dip"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Email"android:textColor="#ffffff"android:textSize="20sp"android:layout_gravity="center_vertical"/></LinearLayout><ExpandableListView android:id="@+id/list"android:layout_height="match_parent"android:layout_width="match_parent"/></LinearLayout>

MainActivity实现

package com.zj.expandandview;import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;public class MainActivity extends Activity {private ExpandableListView expendView;private int []group_click=new int[5];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final MyExpendAdapter adapter=new MyExpendAdapter();expendView=(ExpandableListView) findViewById(R.id.list);expendView.setGroupIndicator(null);  //设置默认图标不显示expendView.setAdapter(adapter);//一级点击事件expendView.setOnGroupClickListener(new OnGroupClickListener() {@Overridepublic boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {group_click[groupPosition]+=1;adapter.notifyDataSetChanged();return false;}});//二级点击事件expendView.setOnChildClickListener(new OnChildClickListener() { @Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {//可在这里做点击事件if(groupPosition==0&&childPosition==1){}else if(groupPosition==0&&childPosition==0){//Intent intent=new Intent(MainActivity.this, MailConstactsActivity.class);//startActivity(intent);}else if(groupPosition==1&&childPosition==0){//Intent intent=new Intent(MainActivity.this, MailEditActivity.class);//startActivity(intent);}else if(groupPosition==1&&childPosition==1){//Intent intent=new Intent(MainActivity.this, MailCaogaoxiangActivity.class);//startActivity(intent);}else if(groupPosition==2&&childPosition==0){}else if(groupPosition==2&&childPosition==1){//Intent intent=new Intent(MainActivity.this, MailBoxActivity.class);//intent.putExtra("TYPE", "INBOX");//intent.putExtra("status", 1);//未读//startActivity(intent);}else if(groupPosition==2&&childPosition==2){//Intent intent=new Intent(MainActivity.this, MailBoxActivity.class);//intent.putExtra("TYPE", "INBOX");//intent.putExtra("status", 2);//已读//startActivity(intent);}adapter.notifyDataSetChanged();return false;}});}/*** 适配器* @author Administrator**/private class MyExpendAdapter extends BaseExpandableListAdapter{/*** pic state*///int []group_state=new int[]{R.drawable.group_right,R.drawable.group_down};/*** group title*/String []group_title=new String[]{"联系人","写邮件","收件箱"};/*** child text*/String [][] child_text=new String [][]{{"联系人列表","添加联系人"},{"新邮件","草稿箱"},{"全部邮件","未读邮件","已读邮件"},};int [][] child_icons=new int[][]{{R.drawable.listlianxiren,R.drawable.tianjia},{R.drawable.xieyoujian,R.drawable.caogaoxiang},{R.drawable.all,R.drawable.notread,R.drawable.hasread},};/*** 获取一级标签中二级标签的内容*/@Overridepublic Object getChild(int groupPosition, int childPosition) {return child_text[groupPosition][childPosition];}/*** 获取二级标签ID*/@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}/*** 对一级标签下的二级标签进行设置*/@SuppressLint("SimpleDateFormat")@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {convertView=getLayoutInflater().inflate(R.layout.email_child, null);TextView tv=(TextView) convertView.findViewById(R.id.tv);tv.setText(child_text[groupPosition][childPosition]);ImageView iv=(ImageView) convertView.findViewById(R.id.child_icon);iv.setImageResource(child_icons[groupPosition][childPosition]);return convertView;}/*** 一级标签下二级标签的数量*/@Overridepublic int getChildrenCount(int groupPosition) {return child_text[groupPosition].length;}/*** 获取一级标签内容*/@Overridepublic Object getGroup(int groupPosition) {return group_title[groupPosition];}/*** 一级标签总数*/@Overridepublic int getGroupCount() {return group_title.length;}/*** 一级标签ID*/@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}/*** 对一级标签进行设置*/@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {convertView=getLayoutInflater().inflate(R.layout.email_group, null);ImageView icon=(ImageView) convertView.findViewById(R.id.icon);ImageView iv=(ImageView) convertView.findViewById(R.id.iv);TextView tv=(TextView) convertView.findViewById(R.id.iv_title);iv.setImageResource(R.drawable.group_right);tv.setText(group_title[groupPosition]);if(groupPosition==0){icon.setImageResource(R.drawable.constants);}else if(groupPosition==1){icon.setImageResource(R.drawable.mailto);}else if(groupPosition==2){icon.setImageResource(R.drawable.mailbox);}if(group_click[groupPosition]%2==0){iv.setImageResource(R.drawable.group_right);}else{iv.setImageResource(R.drawable.group_down);}return convertView;}/*** 指定位置相应的组视图*/@Overridepublic boolean hasStableIds() {return true;}/***  当选择子节点的时候,调用该方法*/@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}}
}

参考链接 :

Android中ExpandableListView控件基本使用 - Android-Idea - 博客频道 - CSDN.NET

完成,效果如下

Android之ExpandableListView相关推荐

  1. Android中ExpandableListView的使用

    Android中ExpandableListView的使用 ExpandableListView是Android中可以实现下拉list的一个控件,具体的实现方法如下: 首先:在layout的xml文件 ...

  2. android 之ExpandableListView详解

    ExpandableListView是一种可应用于某种环境的下拉列表. 实例代码: package com.example.lenovo.expandablelistview_demo;import ...

  3. Android中ExpandableListView控件基本使用

    本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 mai ...

  4. Android中ExpandableListView控件的用法详解

    <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widge ...

  5. Android中ExpandableListView中嵌套ListView

    最近项目挺紧张,一直没有时间总结学习,今天把最近遇到的一个奇葩的设计,做一下总结.其他的好多的APP中做的通讯录都类似微信通讯录这样,但是有这样一个需求的设计. 就是分为两个组,第一个组不需要A-Z的 ...

  6. Android:ExpandableListView实现下拉二级列表

    来源:菜鸟教程,下面是直接下载的地址 ExpandableListViewDemo.zip 下面是实现案例 还没弄明白,但是抄源码确实实现了 下面是菜鸟教程的地址,自己留着备用记录一下,xdm,冲~~ ...

  7. Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)

    1. 设置ExpandableListView 默认是展开的:  先实例化exListView (ExpandableListView所有数据齐全后可用,否则报错) exListView.setAda ...

  8. Android中ExpandableListView子项单击事件没有响应

    前言 此问题多半是加入了Button等可以接收单击事件和可以接收焦点的控件导致. ExpandableListView控件的单击事件的要求大多数大神都已经说过了 1.BaseExpandableLis ...

  9. android expandablelist 自动滚动,Android – 包含ExpandableListView的NestedScrollView在展开时不会滚动...

    使用此方法,这将在运行时计算ExpendableListSize. private void setListViewHeight(ExpandableListView listView, int gr ...

最新文章

  1. 计算机组成原理:输入输出系统
  2. android drawableleft 垂直居中,Android TextView前加图标垂直居中第一行(仿大众点评购买须知/提示语)...
  3. how to verify that Listener is entry point of application
  4. servlet面试常问问题_50个Servlet面试问答
  5. 05.序列模型 W1.循环序列模型
  6. mysql rpm 安装多实例_MySQL搭建系列之多实例
  7. tplink连接服务器失败_管家婆财贸双全连接失败,服务器端没有找到加密狗
  8. MySQL备份和还原数据库及慢查询日志使用
  9. Python成为TIOBE 2020年度编程语言!是获此奖项次数最多的语言
  10. iOS 开发屏幕适配尺寸
  11. 使用视图组件为ASP.NET Core创建侧面菜单
  12. JAVA day18,19 单列集合Collection:List(ArrayList,LinkedList,Vector)、Queue(Deque)、Set(HashSet,TreeSet),比较器
  13. ActionContext保存客户提交的参数,session会话等
  14. 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。
  15. table中td内容过长自动换行
  16. C#写的制程能力CPK分析程序
  17. Win11不能拖拽图片到任务栏软件上快速打开怎么办
  18. 批处理之 FOR循环
  19. python数据挖掘项目——航空公司客户价值分析(详解)
  20. HTML5期末大作业:个人网站设计——简单响应式个人博客HTML模板(8页面) HTML+CSS+JavaScript...

热门文章

  1. 知识图谱入门知识(二)事件抽取(EE)详细介绍
  2. Android增量代码测试覆盖率工具
  3. Spring Boot引起的“堆外内存泄漏”排查及经验总结
  4. 基本功 | Litho的使用及原理剖析
  5. 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
  6. 各种服务常用端口号的含义
  7. Android控件默认风格解析之SeekBar
  8. HTTPS请求实现框架
  9. JavaWeb:XML总结
  10. springCloud(微服务的概念)1-1