Android之ExpandableListView

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

完成,效果如下

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Api -- 连接世界的Super Star

文章目录&#x1f34f; 一、api 的定义&#xff1a;数据共享模式定义 4 大种类&#x1f356; 二、api 使用场景&#xff1a;互联网时代&#xff0c;api 无处不在2.1 sql 查询2.2 数据传输&#x1f364; 三、开放 api&#xff08;OpenAPI&#xff09;&#xff1a;开放双赢&#…

2018全球最强物联网公司揭晓!

来源&#xff1a;数字化企业根据Gartner预测&#xff0c; 到2020年将有超过200亿台联网设备&#xff0c;市场价值将达3000亿美元之巨。随着垂直应用上的不断细分&#xff0c;以及与AI的加速整合&#xff0c;物联网不仅将持续地变革人们的生活和工作&#xff0c;市场规模也将持续…

Android之解析GML并显示

本例主要实现在APP中解析GML数据并显示 GML,地理标记语言&#xff08;外语全称&#xff1a;Geography MarkupLanguage、外语缩写&#xff1a;GML&#xff09;&#xff0c;它由开放式地理信息系统协会&#xff08;外语缩写&#xff1a;OGC&#xff09;于1999年提出&#xff0c;…

中国电子学会发布《新一代人工智能领域十大最具成长性技术展望(2018-2019年)》...

来源&#xff1a;中国电子学会当前&#xff0c;全球正在经历科技和产业高度耦合、深度迭加的新一轮变革&#xff0c;大数据的形成、理论算法的革新、计算能力的提升及网络设施的演进驱动人工智能进入新一轮创新发展高峰期&#xff0c;新技术持续获得突破性进展&#xff0c;呈现…

晓得不,中间表是这样被消灭的

目录 一、中间表的产生 1、一步算不出来 2、实时计算等待时间过长 3、多样性数据源参加计算 4、中间表难以删除 二、文件计算 三、高性能文件格式 四、易管理性 五、多数据源支持 六、集成性 七、资料 一、中间表的产生 中间表是数据库中专门存放中间计算结果的数据…

美国五大科技巨头的人工智能竞赛

来源&#xff1a;资本实验室毫无疑问&#xff0c;人工智能已经开始渗透到各行各业&#xff0c;并正在改变我们的工作方式和生活方式。2017年&#xff0c;全球与人工智能相关的资金投入总额达到152亿美元&#xff0c;比上一年增加144&#xff05;。而无论在投资&#xff0c;还是…

模拟Struts2实现

本文主要是一个模拟的Struts2的简单实现 真正的MVC架构 实现主要思路 定义一个过滤器&#xff0c;接收传递过去的Action&#xff0c;根据处理的结果重定向或者转发。 首先定义index.jsp <% page language"java" import"java.util.*" pageEncoding&q…

实战教学--怎样提高报表呈现的性能?

报表的性能很重要&#xff0c;是一个总被谈及的问题&#xff0c;跑的慢的报表用户体验恶劣&#xff0c;无法忍受。解决这些慢的性能问题&#xff0c;也成了项目方和工程师头疼的事情。一出状况&#xff0c;就得安排技术好的&#xff0c;能力强的工程师去救火&#xff0c;本来利…

WiFi共享精灵 - 不需路由器一键轻松把网线共享给手机、笔记本等同时无线上网...

现在人们身边手机、游戏机等各种使用WiFi上网的设备已经越来越多&#xff0c;但经常遇到一些地方只有有线网络&#xff0c;或者没有无线路由器的情况&#xff0c;这时&#xff0c;用笔记本上网&#xff0c;然后把网络通过WiFi共享给其他设备上网那么就最合适了。我们之前有介绍…

干货|李开复最新刷屏演讲:人工智能最难取代这13种工作,也最容易威胁人性与爱!...

来源&#xff1a;澎湃新闻这两年&#xff0c;创新工场董事长兼首席执行官李开复&#xff0c;一直为人工智能站台和奔走&#xff0c;还出新书帮助人们规划未来的AI生活。他预言&#xff0c;中国有望在全球范围内首先实现OMO&#xff08;Online-Merge-Offline&#xff0c;线上线下…

Apifox vs Eolink,国内 Api 工具哪家强?

目前行业内有 postman、jmeter 为代表开源 Api 工具派系&#xff0c;我想对大家对这两个词并不陌生。虽然它们能解决基本的接口测试&#xff0c;但是无法解决接口链路上的所有问题&#xff0c;一个工具难以支持整个过程。 在国内&#xff0c;我们可以看到有国产 API 管理工具&…

人工智能、区块链、混合现实:2019年新闻、媒体与技术趋势

来源&#xff1a;资本实验室近日&#xff0c;未来今日研究所&#xff08;Future Today Institute&#xff09;发布了《2019年新闻、媒体与技术趋势报告》&#xff0c;报告提出了涵盖多个领域的108个新兴技术趋势。报告显示&#xff0c;未来的新闻、媒体等行业将受到各种技术错综…

活久见:都 2203 年了,你还在使用 word 调试 API

随着信息技术的发展&#xff0c;API 变得无处不在&#xff0c;无处不用。但令人费解的是&#xff0c;都 2203 年了&#xff0c;竟然还有很多人使用 word 调试 API&#xff1f; 今天&#xff0c;西红柿将带领大家打开新世界的大门&#xff0c;放下诺基亚&#xff0c;抄起智能机&…

Struts2基础知识

本文主要包括以下内容 struts2常用常量的定义与意义struts2处理流程拆分struts动态方法调用,使用通配符接收请求参数中文编码问题自定义类型转化器访问或添加request/session/application常用servlet对象的获取 struts2常用常量的定义与意义 struts2处理流程 每一次请求都会创…

自动驾驶汽车测试在美惹争议,原因为何?

来源&#xff1a;中国汽车报摘要&#xff1a;近日&#xff0c;针对美国总统特朗普提出的&#xff0c;汽车制造商需自愿提交他们在公共道路上测试自动驾驶汽车安全报告一事&#xff0c;回应者寥寥&#xff0c;目前只有三家汽车公司响应了上述要求&#xff0c;提交了相关材料。据…

Struts2基础知识(二)

本文主要包括以下内容 文件上传&#xff0c;多文件上传 自定义拦截器 用户输入验证国际化 文件上传 将头设置为enctype”multipart/form-data” <body><form action"${pageContext.request.contextPath}/upload/upload1.action" method"post" …

想做自动驾驶技术的入,这回分享一个简单好用的开放平台

前言 自动驾驶已经是现在技术开发领域最热门的方向之一&#xff0c;作为程序员&#xff0c;很多人也都想来这个领域试试水。但是这个领域的门槛也挺高&#xff0c;不过想开始的话&#xff0c;其实可以从一些专门针对自动驾驶的开放平台开始入手&#xff0c;目前比较主流的可以…

潘建伟团队再登Nature:全球首次实现器件无关量子随机数,量子保密通信安全再升级...

岳排槐 编辑量子位 出品 | 公众号 QbitAI据消息&#xff0c;潘建伟团队日前成功实现了器件无关的量子随机数&#xff0c;将在数值模拟、密码学等领域广泛应用&#xff0c;并有望形成新的随机数国际标准。相关研究成果于北京时间20日由国际权威学术期刊《自然》在线发表&#xf…

一篇文章搞懂数据仓库:数据治理(目的、方法、流程)

目录 1、什么是数据治理 2、数据治理的目的 3、数据治理的方法 4、数据质量8个衡量标准 5、数据治理流程 1、什么是数据治理 数据治理&#xff08;Data Governance&#xff09;是组织中涉及数据使用的一整套管理行为。由企业数据治理部门发起并推行&#xff0c;关于如何制…

在OEL5上安装配置Oracle Gird Control 10.2.0.5

早期的Grid Control问题实在太多了&#xff0c;以至于把10.2.0.1的Grid Control升级到10.2.0.5几乎是不可能完成的任务&#xff1b;此外10.2.0.5以前的gc不支持11g作为repository database仓库数据库&#xff0c;不仅于此10.2.0.1版本是不支持rhel5或OEL5的&#xff0c;如果想安…