`

Android:使用BaseExpandableListAdapter实现可折叠的列表

阅读更多

使用BaseExpandableListAdapter 可以实现所谓的可折叠的列表,例如QQ里好友的分组的功能。

BaseExpandableListAdapter与BaseAdapter的基本原理是一样的,只不过在传入list的时候,要传入两组,一组是groupArray ,一组时childArray,前者用于组名(类似QQ的好友、同学、朋友),后者的每个元素都是一组子数据(类似QQ同学中的张三,李四的集合),实现adapter

复制代码
    public class ExpandableAdapter extends BaseExpandableListAdapter{

         private LinkedList<TeacherSumGroupsModel> groupArray;
         private List<LinkedList<TeacherSumGroupDetailModel>> childArray;
         private Context context;
         private LayoutInflater inflater;
        
         
         public ExpandableAdapter(Context context,LinkedList<TeacherSumGroupsModel> courseGroupList,
                    List<LinkedList<TeacherSumGroupDetailModel>> childArray){
             inflater = ((Activity) context).getLayoutInflater();
             
             this.groupArray = courseGroupList;
             this.childArray = childArray;
         }
        
        
        
        public int getGroupCount() {
            // TODO Auto-generated method stub
            return groupArray.size();
        }

        public int getChildrenCount(int groupPosition) {
            // TODO Auto-generated method stub
            return childArray.get(groupPosition).size();
        }

        public Object getGroup(int groupPosition) {
            // TODO Auto-generated method stub
            return groupArray.get(groupPosition);
        }

        public Object getChild(int groupPosition, int childPosition) {
            // TODO Auto-generated method stub
            return childArray.get(groupPosition).get(childPosition);
        }

        public long getGroupId(int groupPosition) {
            // TODO Auto-generated method stub
            return groupPosition;
        }

        public long getChildId(int groupPosition, int childPosition) {
            // TODO Auto-generated method stub
            return childPosition;
        }

        public boolean hasStableIds() {
            // TODO Auto-generated method stub
            return false;
        }

        public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            
            TextView title;

            if(convertView == null){
                convertView = inflater.inflate(R.layout.simple_listview_item, parent, false);
            }
            title = (TextView) convertView.findViewById(R.id.simple_listview_textview);
            String t = "     "+groupArray.get(groupPosition).getname();
            title.setText(t);
            return convertView;
        }

        public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            TextView title;

            if(convertView == null){
                convertView = inflater.inflate(R.layout.simple_listview_item, parent, false);
            }
            title = (TextView) convertView.findViewById(R.id.simple_listview_textview);
            
            String account = childArray.get(groupPosition).get(childPosition).getAccount();
            String name = childArray.get(groupPosition).get(childPosition).getName();
            String t = account +"          "+name;
            Log.e("sumlist", "info is " +t);
            title.setText(t);
            return convertView;
        }

        public boolean isChildSelectable(int groupPosition, int childPosition) {
            // TODO Auto-generated method stub
            return true;
        }
        
    }
复制代码

代码摘自现在的某个项目。

类似与BaseAdapter的关键getView方法,这里比较重要的是getGroupView和getChildView方法,其实内部实现都是类似的。

   
分享到:
评论

相关推荐

    Android开发丶ExpandableListView实现可展开列表

    在Android开发中,`ExpandableListView`是一种非常实用的列表控件,它允许用户通过点击条目来展开或折叠子列表。这个控件是`ListView`的扩展,提供了更丰富的交互性和展示层次结构数据的能力。在本文中,我们将深入...

    Android BaseExpandableListAdapter 教程.doc

    在Android开发中,`BaseExpandableListAdapter`是一个用于创建可扩展列表视图(ExpandableListView)的数据适配器。这个适配器允许开发者构建复杂的列表结构,其中包含可展开和折叠的组(groups),每个组内又包含多...

    android 列表和可扩展列表的实现

    在Android开发中,列表视图(ListView)和可扩展列表视图(ExpandableListView)是两种常见的组件,用于展示大量数据。它们都是AdapterView家族的一部分,通过适配器(Adapter)来绑定数据并渲染到视图上。让我们深入探讨...

    Android 利用ExpandableListView实现城市列表

    通过以上步骤,你就可以在Android应用中成功实现一个可展开的城市列表了。在实际开发中,你可能还需要根据需求进行优化,比如加载数据、处理空状态、动画效果等。`ExpandableListView`的灵活性和功能强大性使得它...

    Android开发之多级下拉列表菜单实现(仿美团,淘宝等ExpandTabView

    标题中的"Android开发之多级下拉列表菜单实现(仿美团,淘宝等ExpandTabView"指的是在Android应用中模仿这些知名电商平台的下拉菜单效果,实现一种可扩展的Tab视图。描述中提到的"下单时候选择数量时候有美美的动画...

    MonoAndroid:在C#中编写ExpandableListView和BaseExpandableListAdapter

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的列表,使得数据组织更加层次化。在C#中,由于 Xamarin.Android 提供了与Java类似的API,因此我们可以使用C#来实现这一功能。本篇将详细...

    Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友

    在Android开发中,ExpandableListView是一个非常实用的控件,它可以模拟折叠效果,类似于QQ好友列表,用户可以展开或收起各个组,显示或隐藏子项。本教程将详细介绍如何在Android应用中使用ExpandableListView来创建...

    ExpandableListView可折叠列表.rar

    《ExpandableListView:Android开发中的可折叠列表详解》 在Android应用开发中,为了呈现层次分明、结构清晰的数据,ExpandableListView是一个非常实用的控件。它允许用户展开和折叠不同的组,每组下可以包含多个...

    可扩展listview demo BaseExpandableListAdapter

    本示例"可扩展listview demo BaseExpandableListAdapter"将详细讲解如何使用`BaseExpandableListAdapter`来实现一个功能完善的可扩展ListView。 首先,我们需要理解`ExpandableListView`的工作原理。它扩展了`...

    二级Android可展开的列表(带展开动画的expandlistview)

    `ExpandableListView`是Android SDK提供的一个视图类,专门用于展示可折叠的列表数据。它扩展了ListView,增加了群组和子项的概念,每个群组下可以包含多个子项。在这个特定的案例中,"二级Android可展开的列表"意味...

    Expandable-List-Android:可扩展列表 Android 演示

    在Android开发中,可扩展列表(Expandable List)是一种常用的数据展示组件,它允许用户通过点击父项来展开或折叠子项,为用户提供了一种层次化的数据浏览方式。本项目"Expandable-List-Android"提供了一个关于如何...

    android列表收缩与展开

    在Android开发中,`ExpandableListView`是一种特殊的列表视图,它可以展示可折叠的子列表,使得用户可以方便地查看和管理层次结构的数据。本文将深入探讨如何在Android应用中实现`ExpandableListView`的列表收缩与...

    Android自定义ExpandableListView实现二级列表

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可展开和折叠的列表,通常用于构建具有层级结构的数据展示。这个控件能够帮助用户更好地理解和操作复杂的数据,例如菜单、目录或者树状结构的...

    android qq好友列表

    这个实例使用了ExpandableListView控件,这是一个强大的组件,可以展示可展开/折叠的子列表,非常适合构建层次结构的数据,比如好友分组与好友。 首先,我们来详细解释一下ExpandableListView的使用。它继承自...

    android中ExpandableListView嵌套GridView的使用

    `ExpandableListView`允许我们显示可展开和折叠的列表项,而`GridView`则用于展示网格布局的数据。下面将详细介绍如何在`Android`中实现`ExpandableListView`嵌套`GridView`。 ### 1. ExpandableListView基本概念 ...

    android 伸缩列表

    ExtpandableListView是ListView的一个扩展,增加了子项可折叠和展开的能力,使得复杂的层级数据可以更加直观地呈现给用户。这种控件在诸如设置菜单、文件目录等场景中非常常见。 ExtpandableListView的基本结构包括...

    Android分组列表+组title滚动停靠顶部+下拉刷新

    1. **ExpandableListView**:`ExpandableListView`是Android SDK提供的一种可扩展的列表视图,支持子项展开和折叠,适用于展示层次结构的数据。在这个项目中,开发者可能通过重写`ExpandableListView`的某些方法,如...

Global site tag (gtag.js) - Google Analytics