来源:菜鸟教程,下面是直接下载的地址

ExpandableListViewDemo.zip

下面是实现案例

还没弄明白,但是抄源码确实实现了 下面是菜鸟教程的地址,自己留着备用记录一下,xdm,冲~~

https://www.runoob.com/w3cnote/android-tutorial-expandablelistview.html

1.布局三文件

1.1,item_exlist_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:padding="5dp"android:background="#6BBA79"><ImageViewandroid:id="@+id/img_icon"android:layout_width="48dp"android:layout_height="48dp"android:src="@mipmap/iv_lol_icon1"android:focusable="false"/><TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:layout_marginTop="15dp"android:focusable="false"android:text="提莫"android:textSize="18sp" /></LinearLayout>

1.2,item_exlist_group.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:padding="5dp"><TextViewandroid:id="@+id/tv_group_name"android:layout_width="match_parent"android:layout_height="56dp"android:gravity="center_vertical"android:paddingLeft="30dp"android:text="AP"android:textStyle="bold"android:textSize="20sp" /></LinearLayout>

1.3,activity_main.xml

<RelativeLayout 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:padding="5dp"tools:context=".MainActivity"><ExpandableListViewandroid:id="@+id/exlist_lol"android:layout_width="match_parent"android:layout_height="match_parent"android:childDivider="#E02D2F"/></RelativeLayout>

2.逻辑代码4个文件

2.1,Group.java

package jay.com.expandablelistviewdemo;/*** Created by Jay on 2015/9/25 0025.*/
public class Group {private String gName;public Group() {}public Group(String gName) {this.gName = gName;}public String getgName() {return gName;}public void setgName(String gName) {this.gName = gName;}
}

2.2,Item.java

package jay.com.expandablelistviewdemo;/*** Created by Jay on 2015/9/25 0025.*/
public class Item {private int iId;private String iName;public Item() {}public Item(int iId, String iName) {this.iId = iId;this.iName = iName;}public int getiId() {return iId;}public String getiName() {return iName;}public void setiId(int iId) {this.iId = iId;}public void setiName(String iName) {this.iName = iName;}
}

2.3,MainActivity.java

package jay.com.expandablelistviewdemo;import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<Group> gData = null;private ArrayList<ArrayList<Item>> iData = null;private ArrayList<Item> lData = null;private Context mContext;private ExpandableListView exlist_lol;private MyBaseExpandableListAdapter myAdapter = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;exlist_lol = (ExpandableListView) findViewById(R.id.exlist_lol);//数据准备gData = new ArrayList<Group>();iData = new ArrayList<ArrayList<Item>>();gData.add(new Group("AD"));gData.add(new Group("AP"));gData.add(new Group("TANK"));lData = new ArrayList<Item>();//AD组lData.add(new Item(R.mipmap.iv_lol_icon3,"剑圣"));lData.add(new Item(R.mipmap.iv_lol_icon4,"德莱文"));lData.add(new Item(R.mipmap.iv_lol_icon13,"男枪"));lData.add(new Item(R.mipmap.iv_lol_icon14,"韦鲁斯"));iData.add(lData);//AP组lData = new ArrayList<Item>();lData.add(new Item(R.mipmap.iv_lol_icon1, "提莫"));lData.add(new Item(R.mipmap.iv_lol_icon7, "安妮"));lData.add(new Item(R.mipmap.iv_lol_icon8, "天使"));lData.add(new Item(R.mipmap.iv_lol_icon9, "泽拉斯"));lData.add(new Item(R.mipmap.iv_lol_icon11, "狐狸"));iData.add(lData);//TANK组lData = new ArrayList<Item>();lData.add(new Item(R.mipmap.iv_lol_icon2, "诺手"));lData.add(new Item(R.mipmap.iv_lol_icon5, "德邦"));lData.add(new Item(R.mipmap.iv_lol_icon6, "奥拉夫"));lData.add(new Item(R.mipmap.iv_lol_icon10, "龙女"));lData.add(new Item(R.mipmap.iv_lol_icon12, "狗熊"));iData.add(lData);myAdapter = new MyBaseExpandableListAdapter(gData,iData,mContext);exlist_lol.setAdapter(myAdapter);//为列表设置点击事件exlist_lol.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {Toast.makeText(mContext, "你点击了:" + iData.get(groupPosition).get(childPosition).getiName(), Toast.LENGTH_SHORT).show();return true;}});}
}

2.4,MyBaseExpandableListAdapter.java

package jay.com.expandablelistviewdemo;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;/*** Created by Jay on 2015/9/25 0025.*/
public class MyBaseExpandableListAdapter extends BaseExpandableListAdapter {private ArrayList<Group> gData;private ArrayList<ArrayList<Item>> iData;private Context mContext;public MyBaseExpandableListAdapter(ArrayList<Group> gData,ArrayList<ArrayList<Item>> iData, Context mContext) {this.gData = gData;this.iData = iData;this.mContext = mContext;}@Overridepublic int getGroupCount() {return gData.size();}@Overridepublic int getChildrenCount(int groupPosition) {return iData.get(groupPosition).size();}@Overridepublic Group getGroup(int groupPosition) {return gData.get(groupPosition);}@Overridepublic Item getChild(int groupPosition, int childPosition) {return iData.get(groupPosition).get(childPosition);}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic boolean hasStableIds() {return false;}//取得用于显示给定分组的视图. 这个方法仅返回分组的视图对象@Overridepublic View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {ViewHolderGroup groupHolder;if(convertView == null){convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_group, parent, false);groupHolder = new ViewHolderGroup();groupHolder.tv_group_name = (TextView) convertView.findViewById(R.id.tv_group_name);convertView.setTag(groupHolder);}else{groupHolder = (ViewHolderGroup) convertView.getTag();}groupHolder.tv_group_name.setText(gData.get(groupPosition).getgName());return convertView;}//取得显示给定分组给定子位置的数据用的视图@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {ViewHolderItem itemHolder;if(convertView == null){convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_item, parent, false);itemHolder = new ViewHolderItem();itemHolder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);itemHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);convertView.setTag(itemHolder);}else{itemHolder = (ViewHolderItem) convertView.getTag();}itemHolder.img_icon.setImageResource(iData.get(groupPosition).get(childPosition).getiId());itemHolder.tv_name.setText(iData.get(groupPosition).get(childPosition).getiName());return convertView;}//设置子列表是否可选中@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}private static class ViewHolderGroup{private TextView tv_group_name;}private static class ViewHolderItem{private ImageView img_icon;private TextView tv_name;}}

完事儿就这么多内容

Android:ExpandableListView实现下拉二级列表相关推荐

  1. android自带下拉阻尼动画,android 有阻尼下拉刷新列表的实现方法

    本文将会介绍有阻尼下拉刷新列表的实现,先来看看效果预览: 这是下拉状态: 这是下拉松开手指后listView回滚到刷新状态时的样子: 1. 如何调用 虽然效果图看起来样子不太好看,主要是因为那个蓝色的 ...

  2. android二级列表展开,ExpandableListView控件实现二级列表

    效果图如下: 二级列表附有点击事件. 1.布局文件: 此处加了一个自定义的导航RelativeLayout,记得注activity的时候添加 android:theme="@style/Th ...

  3. 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9050573  在上一篇文章中,我们只是大概的了解了一下关于ActionBar ...

  4. android加载时二级联动点击二级联动,Android实现联动下拉框二级地市联动下拉框功能...

    日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手. 思路/步骤 ...

  5. android下拉菜单刷新,android下拉刷新列表实现(pull to refresh)

    android中提供了ListView控件,listview能够为我们展现丰富的内容,有时候我们为了提升用户体检,需要更炫而且更好用户体验的效果,pull to refresh(下拉刷新列表效果)就应 ...

  6. 基于android的网络音乐播放器-下载完成后下拉音乐列表刷新(八)

    作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...

  7. Android自定义控件实战——下拉刷新控件终结者:PullToRefreshLayout

    说到下拉刷新控件,网上版本有很多,很多软件也都有下拉刷新功能.有一个叫XListView的,我看别人用过,没看过是咋实现的,看这名字估计是继承自ListView修改的,不过效果看起来挺丑的,也没什么扩 ...

  8. Android实现联动下拉框

    Android实现联动下拉框,二级地市联动下拉框 日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级 ...

  9. WPS Excel做多级下拉菜单列表

    WPS Excel做多级下拉菜单列表 最近做表格数据需要做一个三级别关联下拉菜单,之前只知道一列下拉菜单是用数据有效性做,三级别的没做过,查了资料,记录一下. 1.一级下拉菜单 选中要添加下拉菜单的数 ...

最新文章

  1. python解压到指定文件夹_Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构...
  2. 百度网络推广带你了解网站文章锚文本优化需要注意的事项?
  3. Hibernate 中lazy的作用
  4. bs4之标签树的平行遍历
  5. 生成chm文档工具- Sandcastle -摘自网络
  6. Ajax调用springboot接口,Springboot解决ajax+自定义headers的跨域请求问题.pdf
  7. php编写一个计算相对路径的函数,php求相对路径的函数
  8. Gnome 快捷键汇总
  9. [转载]常用正则表达式收集勘误
  10. convenient functions in numpy
  11. zip和rar压缩文件的区别
  12. 算法设计与分析:最短路径问题(哈密顿回路+最短路)小学期实践
  13. mac top内存 cpu
  14. 工业级高精度电磁流量计解决方案
  15. linux——CPU使用率、内存使用率、磁盘使用率等详解
  16. win10 安装.net framework3.5 失败,遇到0x800f081f并提示“找不到源文件。请使用“源”选项指定还原该功能所需的文件位置” 的问题
  17. 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作
  18. Intel的ipp库(Integrated Performance Primitives)
  19. 前端上传文件保存到变量中
  20. 如何下载安装Tableau数据可视化工具

热门文章

  1. JavaScript制作网页计算器
  2. 鸿蒙方将拊脾雀跃而游拼音,知行学思 | 《庄子》里的智者形象——鸿蒙
  3. form 的submit提交没有反应
  4. BindService详解
  5. 程序员:世界上最没用的几句话是什么?
  6. Google内购--封装版
  7. linux新建分区安装win,最菜问题,怎么装linux,希望尽可能详细一点:)
  8. 电脑平面设计是什么?想学电脑平面设计。
  9. touchesBegan不响应UIView问题
  10. Android 属性动画 详解