안 드 로 이 드 메뉴 3 레벨 트 리 효과 구현

4464 단어 android메뉴
본 논문 의 사례 는 안 드 로 이 드 실현 메뉴 3 급 트 리 가 보 여 준 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
다음은 일부 코드 입 니 다.전체 코드 는 맨 아래 에서 다운 로드 를 클릭 하 십시오.
【MainActivity】

public void treeOnClick() {
 // TODO Auto-generated method stub
 superAdapter.RemoveAll();
 superAdapter.notifyDataSetChanged();
 String MenuCatName = getDate("MenuCatName");
 String MenuGroupName = getDate("MenuGroupName");
 String MenuItemName = getDate("MenuItemName");
 //        
 parent = MenuCatName.split("/");
 //        
 child = MenuGroupName.split("/");
 //        
 grandchild = MenuItemName.split("/");
 
 List<SuperTreeViewAdapter.SuperTreeNode> superNodeTree = superAdapter
  .GetTreeNode();
 for (int i = 0; i < parent.length; i++) {
  SuperTreeViewAdapter.SuperTreeNode superNode = new SuperTreeViewAdapter.SuperTreeNode();
  superNode.parent = parent[i];
  for (int j = 0; j < child_grandchild.length; j++) {
  TreeViewAdapter.TreeNode node = new TreeViewAdapter.TreeNode();
  node.parent = child_grandchild[j][0][0];
  for (int k = 0; k < child_grandchild[j][1].length; k++) {
   node.childs.add(child_grandchild[j][1][k]);
  }
  superNode.childs.add(node);
  }
  superNodeTree.add(superNode);
 }
 superAdapter.UpdateTreeNode(superNodeTree);
 expandableListView.setAdapter(superAdapter);
 
 }
【SuperTreeViewAdapter】

public ExpandableListView getExpandableListView() {
 AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
  ViewGroup.LayoutParams.FILL_PARENT, TreeViewAdapter.ItemHeight);
 ExpandableListView superTreeView = new ExpandableListView(parentContext);
 superTreeView.setLayoutParams(lp);
 //         
 superTreeView.setDivider(null);
 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);
 //       TreeViewAdapter TreeNode  ,   
 List<TreeNode> tmp = treeViewAdapter.getTreeNode();
 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 + 0);
  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());
 //     menu    
 textView.setBackgroundResource(R.drawable.menu_category);
 textView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0);
 
 return textView;
 }
효과 그림:

전체 코드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기