Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android版手風琴(ExpandableListView)

Android版手風琴(ExpandableListView)

編輯:Android開發實例

先看效果,過瘾一番。

 

 

 源碼下載: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.代碼:

  1. ExpandableListContextMenuInfo menuInfo=(ExpandableListContextMenuInfo)item.getMenuInfo();  
  2.   String title=((TextView)menuInfo.targetView).getText().toString();  
  3.   int type=ExpandableListView.getPackedPositionType(menuInfo.packedPosition);  
  4.     
  5.   if (type==ExpandableListView.PACKED_POSITION_TYPE_CHILD) {  
  6.   int groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);  
  7.   int childPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition);  
  8.  

二、ExpandableListAdapter

    一個接口,將基礎數據鏈接到一個ExpandableListView。此接口的實施將提供訪問Child的數據(由組分類),並實例化的Child和Group。

  1.重要方法

    getChildId(int groupPosition, int childPosition) 獲取與在給定組給予孩子相關的數據。

    getChildrenCount(int groupPosition) 返回在指定Group的Child數目。

  2.代碼

 

  1. public class MyExpandableListAdapter extends BaseExpandableListAdapter {  
  2.          // Sample data set.  children[i] contains the children (String[]) for groups[i].  
  3.          public String[] groups = { "我的好友", "新疆同學", "親戚", "同事" };  
  4.          public String[][] children = {  
  5.                  { "胡算林", "張俊峰", "王志軍", "二人" },  
  6.                  { "李秀婷", "蔡喬", "別高", "余音" },  
  7.                  { "攤派新", "張愛明" },  
  8.                  { "馬超", "司道光" }  
  9.          };  
  10.            
  11.          public Object getChild(int groupPosition, int childPosition) {  
  12.              return children[groupPosition][childPosition];  
  13.          }  
  14.  
  15.          public long getChildId(int groupPosition, int childPosition) {  
  16.              return childPosition;  
  17.          }  
  18.  
  19.          public int getChildrenCount(int groupPosition) {  
  20.              return children[groupPosition].length;  
  21.          }  
  22.  
  23.          public TextView getGenericView() {  
  24.              // Layout parameters for the ExpandableListView  
  25.              AbsListView.LayoutParams lp = new AbsListView.LayoutParams(  
  26.                      ViewGroup.LayoutParams.MATCH_PARENT, 64);  
  27.  
  28.              TextView textView = new TextView(ExpandableListDemo.this);  
  29.              textView.setLayoutParams(lp);  
  30.              // Center the text vertically  
  31.              textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);  
  32.              // Set the text starting position  
  33.              textView.setPadding(36, 0, 0, 0);  
  34.              return textView;  
  35.          }  
  36.            
  37.          public View getChildView(int groupPosition, int childPosition, boolean isLastChild,  
  38.                  View convertView, ViewGroup parent) {  
  39.              TextView textView = getGenericView();  
  40.              textView.setText(getChild(groupPosition, childPosition).toString());  
  41.              return textView;  
  42.          }  
  43.  
  44.          public Object getGroup(int groupPosition) {  
  45.              return groups[groupPosition];  
  46.          }  
  47.  
  48.          public int getGroupCount() {  
  49.              return groups.length;  
  50.          }  
  51.  
  52.          public long getGroupId(int groupPosition) {  
  53.              return groupPosition;  
  54.          }  
  55.  
  56.          public View getGroupView(int groupPosition, boolean isExpanded, View convertView,  
  57.                  ViewGroup parent) {  
  58.              TextView textView = getGenericView();  
  59.              textView.setText(getGroup(groupPosition).toString());  
  60.              return textView;  
  61.          }  
  62.  
  63.          public boolean isChildSelectable(int groupPosition, int childPosition) {  
  64.              return true;  
  65.          }  
  66.  
  67.          public boolean hasStableIds() {  
  68.              return true;  
  69.          }  
  70.  
  71.      }  
  72.  

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved