Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 分享Android中ExpandableListView控件使用教程

分享Android中ExpandableListView控件使用教程

編輯:關於Android編程

本文采用一個Demo來展示Android中ExpandableListView控件的使用,如如何在組/子ListView中綁定數據源。直接上代碼如下:
程序結構圖:

layout目錄下的 main.xml 文件源碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
  <!-- 我們會自己定義listview的顯示方式(在另外一個布局文件裡邊)不用默認的方式  
     如果自定義listview的顯示方式這裡這個android:id="@id/android:list" 必須這樣寫 --> 
  <!-- android:drawSelectOnTop="false"此屬性用來設置listview上的背景顏色會不會 
   擋住(覆蓋)內容 , 如果這是為false就表示不會覆蓋掉 -->  
  <ExpandableListView  
    android:id="@id/android:list"         
    android:layout_width="fill_parent"         
    android:layout_height="wrap_content"        
    android:layout_weight="1"         
    android:drawSelectorOnTop="false"/>  
</LinearLayout> 

包com.andyidea.demo中ContactsActivity.java源碼如下:

package com.andyidea.demo; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import android.app.ExpandableListActivity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.widget.AbsListView; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 
 
public class ContactsActivity extends ExpandableListActivity { 
   
  List<String> group;      //組列表 
  List<List<String>> child;   //子列表 
  ContactsInfoAdapter adapter; //數據適配器 
   
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); //設置為無標題 
    setContentView(R.layout.main); 
    getExpandableListView().setBackgroundResource(R.drawable.default_bg); 
     
    initializeData(); 
    getExpandableListView().setAdapter(new ContactsInfoAdapter()); 
    getExpandableListView().setCacheColorHint(0); //設置拖動列表的時候防止出現黑色背景 
  } 
   
  /** 
   * 初始化組、子列表數據 
   */ 
  private void initializeData(){ 
    group = new ArrayList<String>(); 
    child = new ArrayList<List<String>>(); 
     
    addInfo("Andy",new String[]{"male","138123***","GuangZhou"}); 
    addInfo("Fairy",new String[]{"female","138123***","GuangZhou"}); 
    addInfo("Jerry",new String[]{"male","138123***","ShenZhen"}); 
    addInfo("Tom",new String[]{"female","138123***","ShangHai"}); 
    addInfo("Bill",new String[]{"male","138231***","ZhanJiang"}); 
     
  } 
   
  /** 
   * 模擬給組、子列表添加數據 
   * @param g-group 
   * @param c-child 
   */ 
  private void addInfo(String g,String[] c){ 
    group.add(g); 
    List<String> childitem = new ArrayList<String>(); 
    for(int i=0;i<c.length;i++){ 
      childitem.add(c[i]); 
    } 
    child.add(childitem); 
  } 
   
  class ContactsInfoAdapter extends BaseExpandableListAdapter{ 
 
     
    //-----------------Child----------------// 
    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
      return child.get(groupPosition).get(childPosition); 
    } 
     
    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
      return childPosition; 
    } 
     
    @Override 
    public int getChildrenCount(int groupPosition) { 
      return child.get(groupPosition).size(); 
    } 
     
    @Override 
    public View getChildView(int groupPosition, int childPosition, 
        boolean isLastChild, View convertView, ViewGroup parent) { 
      String string = child.get(groupPosition).get(childPosition);  
      return getGenericView(string); 
    } 
     
    //----------------Group----------------// 
    @Override 
    public Object getGroup(int groupPosition) { 
      return group.get(groupPosition); 
    }         
 
    @Override 
    public long getGroupId(int groupPosition) { 
      return groupPosition; 
    }   
     
    @Override 
    public int getGroupCount() { 
      return group.size(); 
    }   
     
    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
        View convertView, ViewGroup parent) { 
      String string = group.get(groupPosition);  
      return getGenericView(string); 
    } 
 
    //創建組/子視圖  
    public TextView getGenericView(String s) {  
      // Layout parameters for the ExpandableListView  
      AbsListView.LayoutParams lp = new AbsListView.LayoutParams(  
          ViewGroup.LayoutParams.FILL_PARENT, 40); 
  
      TextView text = new TextView(ContactsActivity.this);  
      text.setLayoutParams(lp);  
      // Center the text vertically  
      text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);  
      // Set the text starting position  
      text.setPadding(36, 0, 0, 0);  
        
      text.setText(s);  
      return text;  
    }  
     
     
    @Override 
    public boolean hasStableIds() { 
      // TODO Auto-generated method stub 
      return false; 
    }     
 
    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
      // TODO Auto-generated method stub 
      return true; 
    } 
     
  } 
} 

最後,程序運行後截圖如下:

希望本文所述對大家學習Android軟件編程有所幫助。

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