基本信息
源码名称:android中不错的ExpandableListView实例效果源码
源码大小:2.26M
文件格式:.rar
开发语言:Java
更新时间:2013-03-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

一、ExpandableListView介绍

    一个垂直滚动的显示两个级别(Child,Group)列表项的视图,列表项来自ExpandableListAdapter 。组可以单独展开。

  1.重要方法

      expandGroup(int groupPos) :在分组列表视图中展开一组,

      setSelectedGroup(int groupPosition) :设置选择指定的组。

      setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) :设置选择指定的子项。

      getPackedPositionGroup(long packedPosition) :返回所选择的组

      getPackedPositionForChild(int groupPosition, int childPosition) :返回所选择的子项

      getPackedPositionType(long packedPosition) :返回所选择项的类型(Child,Group)

      isGroupExpanded(int groupPosition) :判断此组是否展开

  2.代码:

ExpandableListContextMenuInfo menuInfo=(ExpandableListContextMenuInfo)item.getMenuInfo();
String title=((TextView)menuInfo.targetView).getText().toString();
int type=ExpandableListView.getPackedPositionType(menuInfo.packedPosition);

if (type==ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
int childPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition);

二、ExpandableListAdapter

    一个接口,将基础数据链接到一个ExpandableListView。此接口的实施将提供访问Child的数据(由组分类),并实例化的Child和Group。

getChildId(int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。
 
    getChildrenCount(int groupPosition) 返回在指定Group的Child数目。


public class MyExpandableListAdapter extends BaseExpandableListAdapter {
         // Sample data set.  children[i] contains the children (String[]) for groups[i].
         public String[] groups = { "我的好友", "新疆同学", "亲戚", "同事" };
         public String[][] children = {
                 { "胡算林", "张俊峰", "王志军", "二人" },
                 { "李秀婷", "蔡乔", "别高", "余音" },
                 { "摊派新", "张爱明" },
                 { "马超", "司道光" }
         };
         
         public Object getChild(int groupPosition, int childPosition) {
             return children[groupPosition][childPosition];
         }
 
         public long getChildId(int groupPosition, int childPosition) {
             return childPosition;
         }
 
         public int getChildrenCount(int groupPosition) {
             return children[groupPosition].length;
         }
 
         public TextView getGenericView() {
             // Layout parameters for the ExpandableListView
             AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                     ViewGroup.LayoutParams.MATCH_PARENT, 64);
 
             TextView textView = new TextView(ExpandableListDemo.this);
             textView.setLayoutParams(lp);
             // Center the text vertically
             textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
             // Set the text starting position
             textView.setPadding(36, 0, 0, 0);
             return textView;
         }
         
         public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
                 View convertView, ViewGroup parent) {
             TextView textView = getGenericView();
             textView.setText(getChild(groupPosition, childPosition).toString());
             return textView;
         }
 
         public Object getGroup(int groupPosition) {
             return groups[groupPosition];
         }
 
         public int getGroupCount() {
             return groups.length;
         }
 
         public long getGroupId(int groupPosition) {
             return groupPosition;
         }
 
         public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
                 ViewGroup parent) {
             TextView textView = getGenericView();
             textView.setText(getGroup(groupPosition).toString());
             return textView;
         }
 
         public boolean isChildSelectable(int groupPosition, int childPosition) {
             return true;
         }
 
         public boolean hasStableIds() {
             return true;
         }
 
     }