예제 #1
0
  /** 三层树结构中的第二层是一个ExpandableListView */
  public View getChildView(
      int groupPosition,
      int childPosition,
      boolean isLastChild,
      View convertView,
      ViewGroup parent) {
    // 是
    final ExpandableListView treeView = getExpandableListView();
    final ThreeViewAdapter treeViewAdapter = new ThreeViewAdapter(this.parentContext, 0);
    List<ThreeViewAdapter.TreeNode> tmp =
        treeViewAdapter.GetTreeNode(); // 临时变量取得TreeViewAdapter的TreeNode集合,可为空
    final ThreeViewAdapter.TreeNode treeNode =
        (ThreeViewAdapter.TreeNode) getChild(groupPosition, childPosition);
    tmp.add(treeNode);
    treeViewAdapter.UpdateTreeNode(tmp);
    treeView.setAdapter(treeViewAdapter);

    // 关键点:取得选中的二级树形菜单的父子节点,结果返回给外部回调函数
    treeView.setOnChildClickListener(this.stvClickEvent);

    /** 关键点:第二级菜单展开时通过取得节点数来设置第三级菜单的大小 */
    treeView.setOnGroupExpandListener(
        new OnGroupExpandListener() {
          @Override
          public void onGroupExpand(int groupPosition) {

            AbsListView.LayoutParams lp =
                new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.FILL_PARENT,
                    (treeNode.childs.size() + 1) * ThreeViewAdapter.ItemHeight + 10);
            treeView.setLayoutParams(lp);
          }
        });

    /** 第二级菜单回收时设置为标准Item大小 */
    treeView.setOnGroupCollapseListener(
        new OnGroupCollapseListener() {
          @Override
          public void onGroupCollapse(int groupPosition) {

            AbsListView.LayoutParams lp =
                new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.FILL_PARENT, ThreeViewAdapter.ItemHeight);
            treeView.setLayoutParams(lp);
          }
        });
    treeView.setPadding(ThreeViewAdapter.PaddingLeft, 0, 0, 0);
    return treeView;
  }
예제 #2
0
 /** 三级树结构中的首层是TextView,用于作为title */
 public View getGroupView(
     int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
   TextView textView = ThreeViewAdapter.getTextView(this.parentContext);
   textView.setText(getGroup(groupPosition).toString());
   textView.setPadding(ThreeViewAdapter.PaddingLeft, 0, 0, 0);
   return textView;
 }