ExpandableListView(listView嵌套)

可以做出一个类似QQ分组的界面(点开分组,里面有人)

在mainactivity中连接到界面,findById找到ExpandableListView,初始化数据,这个初始化是两个List的嵌套,把Student数据放到List<Student> students中,把Clazz数据放在List<Clazz> mClazz中,然后把students套进mClazz中(每个班级都有好多学生,每个mClazz中都有一个students的列表),嵌套是把生成的Clazz的对象(里面包含了student的List、班级名称、编号)放在了List中,然后把这个嵌套的List和初始化的Layoutinflater传给adapter,需要在layout中创建两个规则界面来分别配置GroupView和ChildView,把得来的数据解析,GroupView得到本行List(对应班级对象),里面包含班级名、编号和一个完整List,ChildView也解析这个数据把那个完整的List再解析得到每个学生的信息,然后各自添加到各自的Layout界面

Student类里面是name、age、sex的set get方法

Clazz类里面是clazznum、clazzname、List<Clazz>的setget方法

mainactivity

public class MainActivity extends Activity {private List<Clazz> mClazzs;private ExpandableListView mExpandListview;private ExpandableAdapter mAdapter;private LayoutInflater inflater;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);mExpandListview = (ExpandableListView) findViewById(R.id.expandableListview);        gettData();inflater=getLayoutInflater();mAdapter=new ExpandableAdapter(mClazzs,inflater);mExpandListview.setAdapter(mAdapter);    }
private void gettData() {mClazzs = new ArrayList<>();    List<Student> students = new ArrayList<>();    students.add(new Student("张三", "男", "18"));添加student的List    students.add(new Student("李四", "男", "19"));    students.add(new Student("王五", "男", "21"));    students.add(new Student("赵六", "男", "23"));    students.add(new Student("马奇", "男", "20"));

mClazzs.add(new Clazz("一班", students, "201501"));添加班级的List并把students这个List嵌套,构造器可以把students这个List传给ClazzmClazzs.add(new Clazz("二班", students,"201502"));mClazzs.add(new Clazz("三班", students,"201503"));mClazzs.add(new Clazz("四班", students,"201504"));}

Expandableadapter继承自BaseExpandableListAdapter

getGroupCount
getChildrenCount
getGroupView
getChildView

这四个复写的方法需要重写,其他的都是返回position

@Overridepublic int getGroupCount() {return mClazz.size();}
@Overridepublic int getChildrenCount(int groupPosition) {return mClazz.get(groupPosition).getStudents().size();    找到Clzz找到学生的ListView得到长度}
@Overridepublic View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {    convertView=mInflater.inflate(R.layout.item_clazz,null);    TextView clazzName= (TextView) convertView.findViewById(R.id.textview_clazz_name);    TextView clazzNum= (TextView) convertView.findViewById(R.id.textview_clazz_num);    TextView clazzStuNum= (TextView) convertView.findViewById(R.id.textview_clazz_renshu);    Clazz clazz=mClazz.get(groupPosition);    clazzName.setText(clazz.getClazzName());    clazzNum.setText(clazz.getClazzNum());    clazzStuNum.setText(""+clazz.getStudents().size());//输出这种长度太小(不是本身带有的),计算机找不到,转化成String类型
return convertView;}

@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {   convertView=mInflater.inflate(R.layout.item_student,null);    TextView studentName= (TextView) convertView.findViewById(R.id.textview_student_name);    TextView studentSex= (TextView) convertView.findViewById(R.id.textview_student_sex);    TextView studentAge= (TextView) convertView.findViewById(R.id.textview_student_age);   Clazz clazz=mClazz.get(groupPosition);得到对应的班级    List<Student> studentslist=clazz.getStudents();得到这个班级类中包含的student  List    Student student=studentslist.get(childPosition);从List对应行得到学生对象    studentName.setText(student.getName());    studentAge.setText(student.getAge());    studentSex.setText(student.getSex());return convertView;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-04 11:55:39

ExpandableListView(listView嵌套)的相关文章

android listView嵌套gridview的使用心得

在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据.那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动.如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,思路是这样,一下是代码.具体的方法是自定义GridView组件,继承自GridView.重载onMeasure方法: public cla

ListView嵌套GridView

首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图: 微博: 陌陌: 大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点: 1.ListView嵌套GridView,互不冲突,界面显示及操作正常: 2.GridView中的图片依据屏幕大小,自动扩大或缩小以适应屏幕,并始终保持正方形: 3.图片数量不同时,布局不同(如上图的4张图片和6张图片): 4.点击ListView的item和点击Gridview的item互不冲突: 5.在GridView区域外的任何一点点击都可以触

一个listview嵌套listview的简单例子

在我刚刚看到一个页面是需要listview嵌套listview的时候  我内心是拒绝的, 这种设计也太傻逼了啊.. 但是不能退缩不是,其实也很简单,关键都在Adapter中 在最外层的listview ,讲第二层的listview当成一个简单的控件,比如textview啥的  你比较好理解的东西 写进viewholder中 比如: public static class ViewHolder { public TextView mTextView; //体检项目的分类 如:车身报告 public

Android ListView嵌套ListView的实现方式

首先刚到北京一个月,产品经理让做一个类似于商城的东东,起初感觉没什么难度,(不就一个电子商务app嘛,以前也做过啊),但是当看到有需求是这样的 然后就开始做,起初太懒了,就在网上找,找到了一个ListView嵌套ListView的一哥们的讲解的大致思路的,然后根据那哥们的思路自己写了一个demo,感觉效果还挺好,不卡, 第一种实现方式:这种方式有个问题就像我项目中的问题,子列中的值如果是加减变化的,对应的每个父类的item的总价格会动态变化的话用此方式就会出现一定的问题,如果不需要实现像我项目图

ScrollView+Fragment+ListView嵌套ListView,麻麻再也不用担心我不会写嵌套

前言 之前写了一篇文章 android ListView/GridView与ScrollView嵌套的滑动冲突解决 介绍了如何解决ScrollView与AdapterView的嵌套,但是没有给出demo,那是因为那些代码比较多,而且是在手头的项目里,业务逻辑代码比较多,所以第一时间没有分享给大家. 今天终于有空把这些代码全部抽离了出来,并且去掉了业务代码和不必要的内容,以便大家能够更好的学习这个知识. 先贴一个效果图吧: 之前项目里我是使用复写ScrollView的onInterceptTouc

浅谈ScrollView嵌套ListView及ListView嵌套的高度计算

引言 在Android开发中,我们有时会需要使用ScrollView中嵌套ListView的需求.例如:在展示信息的ListView上还有一部分信息展示区域,并且要求这部分信息展示区域在ListView信息比较多的时候也是可以滑动的,而不是固定不变的.这时,我们一般会将ScrollView和ListView嵌套在一起使用.但是这会导致ListView展示不全,然后也会有滑动冲突问题.下面我们来看看怎么解决. 解决方案 主动计算和设置ListView的高度,这样就可以合理的展示ListView的高

Listview嵌套Viewpager实现仿淘宝搜狐广告主页,并实现listview的下拉刷新

Android实现功能:Listview嵌套viewpager仿淘宝搜狐视频主页面,和listview的下拉刷新. 什么都不说了:直接上图说效果 listview嵌套viewpager实现仿淘宝的广告滑动主页面 源码连接:(http://download.csdn.net/detail/qq_30000411/9528977) APK下载连接:(http://download.csdn.net/detail/qq_30000411/9528973) 下面给出我源码的主要文件构成: MyListV

ListView嵌套ListView优化

在做业务时候,一个ListView显示多种数据类型,我们想到的方法是ListView在嵌套一个ListView,对于子ListView 占父ListView的一行,就解决了问题,但是这样的逻辑是不是有点奇怪呢? 第一,父ListView的长度size需要加1,因为增加了一行放子listView public int getCount() { return datas.size()+1; } 第二,需要判断在什么地方插入子listView ,就要用到getViewTypeCount()和getIt

android滑动组件嵌套一般思路,多任务手势思路,触摸传递思路,【例】listview嵌套viewpager

在android UI开发中,我们经常会遇到这种需求: 两个支持滑动的组件,比如listview嵌套多个listview,listview的item是一个viewpager或gallary?亦或是scrollview嵌套scrollview等等. 一般情况下,你还可能需要支持如下几种功能: ¤ 两层组件都可以滑动 ¤ 不让两个组件同时滑动,或者让两个组件同时滑动并可以自己调节 ¤ 不影响底层view的子view和嵌套view的子view的点击事件 实现上述功能时,我们也经常遇到一些问题: ¤ 点