androidÈí¼þ¿ª·¢ÂÛÎÄ ÏÂÔØ±¾ÎÄ

@Override

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = null; //ÕâÀïÅжÏconvertViewÊÇ·ñΪ¿Õ£¬ÊÇΪÁËËüµÄ¸´Ó㬸ã¸ßÐÔÄÜ if(convertView==null) { //²úÉúÒ»¸öTextView×é¼þ textView = getGenericView(); //ÉèÖÃËüµÄÎı¾ÄÚÈÝ textView.setText(getChild(groupPosition, childPosition).toString()); } else { textView = (TextView)convertView; textView.setText(getChild(groupPosition, childPosition).toString()); } return textView; } /**

* µÃµ½Ó¦Ò»¼¶ÁбíÏîµÄ×ÓÁбíÏî¸öÊý

* @param groupPositionÒ»¼¶ÁбíµÄË÷ÒýÖµ * @return ¶ÔÓ¦¶þ×é¼¶Áбí¸öÊý */

@Override

public int getChildrenCount(int groupPosition) { return childs[groupPosition].length; } /**

* ÓÉÒ»¼¶ÁбíË÷ÒýÖµgroupPositionµÃµ½Ò»¼¶ÁбíµÄÏîµÄÄÚÈÝ * @return Ò»¼¶ÁбíÏîÄÚÈÝ */

@Override

public Object getGroup(int groupPosition) { return groups[groupPosition]; } /**

* Ò»×éÁбíµÄ¸öÊý

* @return ·µ»ØÒ»¼¶Áбí¸öÊý */

@Override

public int getGroupCount() { return groups.length; } /**

33

* µÃµ½Ò»¼¶ÁбíID,¼´Ë÷ÒýÖµ

* @param groupPositionΪһ¼¶ÁбíµÄË÷ÒýÖµ * @return Ò»¼¶ÁбíID£¬´Ó0¿ªÊ¼ */

@Override

public long getGroupId(int groupPosition) { return groupPosition; } /**

* @return Ò»¼¶Áбí¶ÔÓ¦µÄView¶ÔÏóʵÀý */

@Override

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = null; if(convertView==null){ textView = getGenericView(); textView.setText(getGroup(groupPosition).toString()); }else { textView = (TextView)convertView; textView.setText(getGroup(groupPosition).toString()); } return textView; }

@Override

public boolean hasStableIds() { return true; } /**

* ÅжÏÖ¸¶¨µÄ¶þ×éÑ¡ÏîÊÇ·ñ¿ÉÑ¡

* @param groupPosition Ò»¼¶ÁбíÏîË÷ÒýÖµ * @param childPosition ¶þ¼¶ÁбíÏîË÷ÒýÖµ * @return ²¼¶ûÐÍ */

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } /**

* ²úÉúÒ»¸öTextView¶ÔÏóʵÀý * @return Ò»¸öTextView×é¼þʵÀý */

34

private TextView getGenericView() { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 48); TextView textView = new TextView(context); textView.setLayoutParams(lp); textView.setTextSize(18); textView.setTextColor(Color.WHITE); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(32, 0, 0, 0); return textView; } /**

* ·µ»Ø´ËÉìËõÐÔÁбíµÄ¹ýÂËÆ÷ * @return Filter Ò»¸ö¹ýÂËÆ÷¶ÔÏó */

@Override

public Filter getFilter() { if(filter == null) { filter = new CityFilter(); } return filter; }

private class CityFilter extends Filter { /** * ÓÉÌõ¼þ×Ö·û´®À´¹ýÂËÁÐ±í£¬·µ»Ø¹ýÂ˺óµÄ½á¹û·â×°¶ÔÏóFilterResults * @param constraint ¹ýÂ˵ÄÌõ¼þ×Ö·û´® * @return Ò»¸ö·â×°¹ýÂ˵Ľá¹ûÀà */ @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); //ÓÃÓÚ´æ·Å·ûºÏÌõ¼þµÄÊ¡·ÝË÷ÒýÖµ£¬¸÷ÓëÖ®¶ÔӦƥÅäµÄ³ÇÊÐ Map> values = new HashMap>(); //µ±¹ýÂËÌõ¼þΪ¿Õʱ£¬·µ»ØËùÓеÄÊ¡·ÝÓë³ÇÊÐ if(constraint == null || constraint.length() == 0) { for(int i=0; i index = new ArrayList(); //Ìí¼ÓËùÓÐÓëÖ®¶ÔÓ¦µÄ³ÇÊÐ for(int j=0; j

35

index.add(j); } values.put(i, index); } } else { String filterStr = constraint.toString(); for(int i=0; i index = new ArrayList(); //Ìí¼ÓËùÓÐÓëÖ®¶ÔÓ¦µÄ³ÇÊÐ for(int j=0; j index = new ArrayList(); //Èç¹ûÊ¡·ÝÃûûÓУ¬Ôò²éÕÒËüÏÂÃæµÄ³ÇÊÐÃûÊÇ·ñ°üº¬ for(int j=0; j 0) { values.put(i, index); } else { index = null; } } } } results.values = values; results.count = values.size(); return results; } /**

* ½âÎö¹ýÂ˵õ½µÄ½á¹ûresults£¬¸üÐÂÊÊÅäÆ÷µÄÁбíÊý¾Ý * @param constraint ¹ýÂËÌõ¼þ * @param results ¹ýÂ˵õ½µÄ½á¹û */

@SuppressWarnings(\

36