Android 列表之分组ListView

1、主要是处理分组标签

禁止标签项的响应事件,重写父类BaseAdapter中提供了isEnable的()方法。

2、下面是 Adapter 的实现:

class MyAdapter extends ArrayAdapter<String> {

  public MyAdapter(Context context, int textViewResourceId,
    List<String> objects) {
   super(context, textViewResourceId, objects);

  }

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

  @Override
  public boolean isEnabled(int position) {
   // 如果-开头,则该项不可选
   return !listTag.contains(getItem(position));
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   View view = convertView;
   // 根据标签类型加载不通的布局模板
   if (listTag.contains(getItem(position))) {
    // 如果是标签项
    view = LayoutInflater.from(getContext()).inflate(
      R.layout.group_list_item_tag, null);
   } else {
    // 否则就是数据项
    view = LayoutInflater.from(getContext()).inflate(
      R.layout.group_list_item, null);
   }
   // 显示名称
   TextView textView = (TextView) view
     .findViewById(R.id.group_list_item_text);
   textView.setText(getItem(position));
   // 返回重写的view
   return view;
  }

 }

3、构造显示的数据:

private List<String> getData() {
  List<String> data = new ArrayList<String>();
  int i = 0;

  data.add("A");
  listTag.add("A");
  data.add("aa试数据" + (i++));
  data.add("a试数据" + (i++));
  data.add("aa试数据" + (i++));
  
  listTag.add("B");
  data.add("B");
  data.add("bb试数据" + (i++));
  data.add("b试数据" + (i++));
  data.add("b试数据" + (i++));
  data.add("b试数据" + (i++));
  
  listTag.add("C");
  data.add("C");
  data.add("c测试数据" + (i++));
  data.add("c测试数据" + (i++));
  
  listTag.add("D");
  data.add("D");
  data.add("d测试数据" + (i++));
  data.add("d测试数据" + (i++));
  data.add("d测试数据" + (i++));
  
  listTag.add("E");
  data.add("E");
  data.add("e测试数据" + (i++));
  data.add("e测试数据" + (i++));
  data.add("e测试数据" + (i++));
  
  listTag.add("F");
  data.add("F");
  data.add("f测试数据" + (i++));
  
  return data;
 }

4、显示ListView

listView = (ListView) findViewById(R.id.list);
myAdapter = new MyAdapter(this,
android.R.layout.simple_expandable_list_item_1, getData());
 listView.setAdapter(myAdapter);
原文地址:https://www.cnblogs.com/tangxl/p/2650258.html