Android版手风琴(ExpandableListView)

先看效果,过瘾一番。

源码下载:http://files.cnblogs.com/salam/WidgetDemo.rar

  

  ExpandableListView是Android中的手风琴,本人感觉效果相当棒。

  一、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) {
intgroupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
intchildPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition);

二、ExpandableListAdapter

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

  1.重要方法

    getChildId(int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。

    getChildrenCount(int groupPosition) 返回在指定Group的Child数目。

  2.代码

 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;         }     }

<!--end: topics 文章、评论容器-->

<script type="text/javascript"></script>

<script type="text/javascript"></script>

更多相关文章

  1. Android(安卓)4.4从图库选择图片,获取图片路径并裁剪
  2. android 植入点乐广告方法
  3. android 事件分发机制(转载)
  4. 蓝牙API
  5. android获取本地图片或拍照图片
  6. Android再按一次返回键退出程序的实现
  7. Android(安卓)View事件派发机制详解与源码分析
  8. Android(安卓)选择图片、上传图片之ImagePicker
  9. Android(安卓)程式开发:(十一)选择控件 —— 11.1 TimePicker

随机推荐

  1. React native 及 Android(安卓)测试(真机
  2. Android开发中调用Spring CXF整合发布的W
  3. Android(安卓)WMS分析(一) WindowManager
  4. Android开发(1)——项目结构
  5. android source 把自己的apk 编译进 syst
  6. android 局部界面动态切换
  7. android 技术经验归纳
  8. Android中Message传递参数(bundle setDat
  9. Android(安卓)Jetpack-Navigation改造使
  10. [中英文对照]android Designing for TV(