• 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方法,其实内部实现都是类似的。

       


    作者:老Zhan
    出处:http://www.cnblogs.com/mybkn/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    python第十一天
    python第七天(字符编码,字符与字节,文件操作)
    python第六天(元组、字典、集合)
    python第五天
    python第四天
    根据数据库文件,查找对应的数据库
    Windows 路径问题
    32位及64位操作系统的程序问题
    好玩的获取目录信息的例子[C#]
    C# 反射相关的东西
  • 原文地址:https://www.cnblogs.com/mybkn/p/2553637.html
Copyright © 2020-2023  润新知