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