• android 手风琴


    引用:http://note.youdao.com/share/?id=994df799c2dcc8d83a8909173e42f80d&type=note

    先看效果,过瘾一番。

    源码下载: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) {
    int groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
    int childPos =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;
    }

    }

  • 相关阅读:
    Celery
    windows笔记目录
    Linux笔记目录
    python笔记目录
    rsa
    c#目录
    webpack3.x配置
    RabbitMQ服务安装(Linux)
    JavaScript验证用户输入
    IP地址检测工具
  • 原文地址:https://www.cnblogs.com/sode/p/3158148.html
Copyright © 2020-2023  润新知