zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    PCB 规则引擎之脚本语言JavaScript应用评测
    PCB 挺有意思的基数排序----C#代码实现
    PCB NOSQL MongoDb MI流程指示数据存储结构
    PCB javascript解析Gerber274X格式实现方法
    PCB javascript解析钻孔(Excellon)格式实现方法
    PCB 围绕CAM自动化,打造PCB规则引擎
    PCB Genesis拼SET画工艺边 实现方法(一)
    约瑟夫环的三种解法
    Microsoft edge真香!
    商城规格参数
  • 原文地址:https://www.cnblogs.com/tangxl/p/2650258.html
Copyright © 2011-2022 走看看