package com.yhx.expandablelistview;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import com.yhx.expandablelistview.TreeViewAdapter.TreeNode;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupCollapseListener;
import android.widget.ExpandableListView.OnGroupExpandListener;
import android.widget.TextView;
public class SuperTreeViewAdapter extends BaseExpandableListAdapter {
static public class SuperTreeNode {
Object parent;
//二级树形菜单的结构体
List<TreeViewAdapter.TreeNode> childs = new ArrayList<TreeViewAdapter.TreeNode>();
}
private List<SuperTreeNode> superTreeNodes = new ArrayList<SuperTreeNode>();
private Context parentContext;
private OnChildClickListener stvClickEvent;//外部回调函数
public SuperTreeViewAdapter(Context view,OnChildClickListener stvClickEvent) {
parentContext = view;
this.stvClickEvent=stvClickEvent;
}
public List<SuperTreeNode> GetTreeNode() {
return superTreeNodes;
}
public void UpdateTreeNode(List<SuperTreeNode> node) {
superTreeNodes = node;
}
public void RemoveAll()
{
superTreeNodes.clear();
}
public Object getChild(int groupPosition, int childPosition) {
return superTreeNodes.get(groupPosition).childs.get(childPosition);
}
public int getChildrenCount(int groupPosition) {
return superTreeNodes.get(groupPosition).childs.size();
}
public ExpandableListView getExpandableListView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, TreeViewAdapter.ItemHeight);
ExpandableListView superTreeView = new ExpandableListView(parentContext);
superTreeView.setLayoutParams(lp);
return superTreeView;
}
/**
* 三层树结构中的第二层是一个ExpandableListView
*/
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// 是
final ExpandableListView treeView = getExpandableListView();
final TreeViewAdapter treeViewAdapter = new TreeViewAdapter(this.parentContext,0);
List<TreeNode> tmp = treeViewAdapter.getTreeNode();//临时变量取得TreeViewAdapter的TreeNode集合,可为空
final TreeNode treeNode=(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)*TreeViewAdapter.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,
TreeViewAdapter.ItemHeight);
treeView.setLayoutParams(lp);
}
});
treeView.setPadding(TreeViewAdapter.PaddingLeft*2, 0, 0, 0);
return treeView;
}
/**
* 三级树结构中的首层是TextView,用于作为title
*/
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = TreeViewAdapter.getTextView(this.parentContext);
textView.setText(getGroup(groupPosition).toString());
textView.setPadding(TreeViewAdapter.PaddingLeft*2, 0, 0, 0);
return textView;
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public Object getGroup(int groupPosition) {
return superTreeNodes.get(groupPosition).parent;
}
public int getGroupCount() {
return superTreeNodes.size();
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean hasStableIds() {
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ExpandableListView三级列表树形结构
共45个文件
class:19个
java:7个
png:6个
5星 · 超过95%的资源 需积分: 41 67 下载量 165 浏览量
2013-10-10
15:24:46
上传
评论
收藏 73KB RAR 举报
温馨提示
ExpandableListView 三级列表树形结构代码 TreeViewAdapter SuperTreeViewAdapter
资源推荐
资源详情
资源评论
收起资源包目录
ExpandableListView.rar (45个子文件)
ExpandableListView
.project 854B
project.properties 360B
proguard.cfg 1KB
src
com
yhx
expandablelistview
SuperTreeNode.java 243B
TreeViewAdapter.java 3KB
TreeNode.java 204B
ExpandableListViewActivity.java 4KB
SuperTreeViewAdapter.java 4KB
AndroidManifest.xml 757B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 1KB
values
strings.xml 202B
.settings
org.eclipse.core.resources.prefs 86B
assets
gen
com
yhx
expandablelistview
BuildConfig.java 168B
R.java 927B
.classpath 364B
bin
resources.ap_ 11KB
ExpandableListView.apk 18KB
classes
com
yhx
expandablelistview
R$layout.class 418B
SuperTreeViewAdapter$SuperTreeNode.class 818B
SuperTreeNode.class 692B
BuildConfig.class 361B
R$drawable.class 431B
ExpandableListViewActivity$2.class 2KB
R$attr.class 364B
ExpandableListViewActivity$1.class 4KB
TreeNode.class 495B
ExpandableListViewActivity$1$1.class 2KB
SuperTreeViewAdapter$2.class 1KB
R$id.class 519B
SuperTreeViewAdapter.class 6KB
TreeViewAdapter$TreeNode.class 624B
SuperTreeViewAdapter$1.class 2KB
R.class 587B
R$string.class 451B
ExpandableListViewActivity.class 3KB
TreeViewAdapter.class 4KB
AndroidManifest.xml 757B
jarlist.cache 119B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
classes.dex 13KB
共 45 条
- 1
KiBa1215
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页