2015-09-28 84 views

回答

0

1,创建可扩展列表适配器类,如下所示扩展底座扩展列表适配器...

import java.util.HashMap; 
import java.util.List; 
import android.content.Context; 
import android.graphics.Typeface; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 

public class ExpandableListAdapter extends BaseExpandableListAdapter { 

private Context context; 
private List<String> expandableListTitle; 
private HashMap<String, List<String>> expandableListDetail; 

public ExpandableListAdapter(Context context, List<String> expandableListTitle, 
          HashMap<String, List<String>> expandableListDetail) { 
    this.context = context; 
    this.expandableListTitle = expandableListTitle; 
    this.expandableListDetail = expandableListDetail; 
} 

@Override 
public Object getChild(int listPosition, int expandedListPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .get(expandedListPosition); 
} 

@Override 
public long getChildId(int listPosition, int expandedListPosition) { 
    return expandedListPosition; 
} 

@Override 
public View getChildView(int listPosition, final int expandedListPosition, 
         boolean isLastChild, View convertView, ViewGroup parent) { 
    final String expandedListText = (String) getChild(listPosition, expandedListPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_item, null); 
    } 
    TextView expandedListTextView = (TextView) convertView 
      .findViewById(R.id.expandedListItem); 
    expandedListTextView.setText(expandedListText); 
    return convertView; 
} 

@Override 
public int getChildrenCount(int listPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .size(); 
} 

@Override 
public Object getGroup(int listPosition) { 
    return this.expandableListTitle.get(listPosition); 
} 

@Override 
public int getGroupCount() { 
    return this.expandableListTitle.size(); 
} 

@Override 
public long getGroupId(int listPosition) { 
    return listPosition; 
} 

@Override 
public View getGroupView(int listPosition, boolean isExpanded, 
         View convertView, ViewGroup parent) { 
    String listTitle = (String) getGroup(listPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_group, null); 
    } 
    TextView listTitleTextView = (TextView) convertView 
      .findViewById(R.id.listTitle); 
    listTitleTextView.setTypeface(null, Typeface.BOLD); 
    listTitleTextView.setText(listTitle); 
    return convertView; 
} 

@Override 
public boolean hasStableIds() { 
    return false; 
} 

@Override 
public boolean isChildSelectable(int listPosition, int expandedListPosition) { 
    return true; 
} 
} 
  1. 创建您的列表视图。在布局xml中定义可展开列表视图

    expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); 
    expandableListDetail = <ArrayList>; // Provide your array list here 
    expandableListTitle = new ArrayList(<Title of your list goes here>); 
    expandableListAdapter = new ExpandableListAdapter(this,  expandableListTitle, expandableListDetail); 
    expandableListView.setAdapter(expandableListAdapter); 
    expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
    
        @Override 
        public void onGroupExpand(int groupPosition) { 
         Toast.makeText(getApplicationContext(), 
           expandableListTitle.get(groupPosition) + " List Expanded.", 
           Toast.LENGTH_SHORT).show(); 
        } 
    }); 
    expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { 
    
        @Override 
        public void onGroupCollapse(int groupPosition) { 
         Toast.makeText(getApplicationContext(), 
           expandableListTitle.get(groupPosition) + " List Collapsed.", 
           Toast.LENGTH_SHORT).show(); 
    
        } 
    }); 
    expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
        @Override 
        public boolean onChildClick(ExpandableListView parent, View v, 
               int groupPosition, int childPosition, long id) { 
         Toast.makeText(
           getApplicationContext(), 
           expandableListTitle.get(groupPosition) 
             + " -> " 
             + expandableListDetail.get(
             expandableListTitle.get(groupPosition)).get(
             childPosition), Toast.LENGTH_SHORT 
    
         ) 
           .show(); 
    } 
    });