龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 移动开发 > Android开发 >

Android提高之多级树形菜单的实现方法(2)

时间:2014-08-10 02:32来源:网络整理 作者:网络 点击:
分享到:
TreeViewAdapter.java是实现二级树形菜单的工具类,源码如下: package com.testExpandableList;import java.util.ArrayList;import java.util.List;import android.content.Context;import andr

TreeViewAdapter.java是实现二级树形菜单的工具类,源码如下:

package com.testExpandableList;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class TreeViewAdapter extends BaseExpandableListAdapter{
 public static final int ItemHeight=48;//每项的高度
 public static final int PaddingLeft=36;//每项的高度
 private int myPaddingLeft=0;//如果是由SuperTreeView调用,则作为子项需要往右移
 static public class TreeNode{
 Object parent;
 List<Object> childs=new ArrayList<Object>();
 }
 List<TreeNode> treeNodes = new ArrayList<TreeNode>();
 Context parentContext;
 public TreeViewAdapter(Context view,int myPaddingLeft)
 {
 parentContext=view;
 this.myPaddingLeft=myPaddingLeft;
 }
 public List<TreeNode> GetTreeNode()
 {
 return treeNodes;
 }
 public void UpdateTreeNode(List<TreeNode> nodes)
 {
 treeNodes=nodes;
 }
 public void RemoveAll()
 {
 treeNodes.clear();
 }
 public Object getChild(int groupPosition, int childPosition) {
 return treeNodes.get(groupPosition).childs.get(childPosition);
 }
 public int getChildrenCount(int groupPosition) {
 return treeNodes.get(groupPosition).childs.size();
 }
 static public TextView getTextView(Context context) {
 AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
  ViewGroup.LayoutParams.FILL_PARENT, ItemHeight);
 TextView textView = new TextView(context);
 textView.setLayoutParams(lp);
 textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
 return textView;
 }
 public View getChildView(int groupPosition, int childPosition,
  boolean isLastChild, View convertView, ViewGroup parent) {
 TextView textView = getTextView(this.parentContext);
 textView.setText(getChild(groupPosition, childPosition).toString());
 textView.setPadding(myPaddingLeft+PaddingLeft, 0, 0, 0);
 return textView;
 }
 public View getGroupView(int groupPosition, boolean isExpanded,
  View convertView, ViewGroup parent) {
 TextView textView = getTextView(this.parentContext);
 textView.setText(getGroup(groupPosition).toString());
 textView.setPadding(myPaddingLeft+(PaddingLeft>>1), 0, 0, 0);
 return textView;
 }
 public long getChildId(int groupPosition, int childPosition) {
 return childPosition;
 }
 public Object getGroup(int groupPosition) {
 return treeNodes.get(groupPosition).parent;
 }
 public int getGroupCount() {
 return treeNodes.size();
 }
 public long getGroupId(int groupPosition) {
 return groupPosition;
 }
 public boolean isChildSelectable(int groupPosition, int childPosition) {
 return true;
 }
 public boolean hasStableIds() {
 return true;
 }
}

精彩图集

赞助商链接