本文实例讲述了Android实现的ListView分组布局改进方法。分享给大家供大家参考,具体如下:

由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图:

然后是实现该ListView布局的主要代码:

1、程序主界面 SeparateListView.java

package whu.iss.wuxianglong;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.TextView;public class SeparateListView extends Activity {  ListView listView;  MyAdapter myAdapter;  public List listTag = new ArrayList();  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    listView = (ListView) findViewById(R.id.list);    myAdapter = new MyAdapter(this,        android.R.layout.simple_expandable_list_item_1, getData());    listView.setAdapter(myAdapter);  }  private List getData() {    List data = new ArrayList();    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;  }  class MyAdapter extends ArrayAdapter {    public MyAdapter(Context context, int textViewResourceId,        List 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;    }  }}

2、程序主界面布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>    

3、ListView中数据部分样式布局文件group_list_item.xml

<?xml version="1.0" encoding="utf-8"?>        

4、ListView中分组标志行的样式布局文件group_list_item_tag.xml

<?xml version="1.0" encoding="utf-8"?>    

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android屏幕适配布局和字体
  4. Android应用开发——Activity组件
  5. Android(安卓)adb的权限问题(可以不通过adb,而直接访问.db文件)
  6. Android(安卓)WebView 软键盘遮挡输入框问题的解决方法
  7. LayoutInflater的inflate方法使用
  8. Ubuntu Linux14 64位下在Android(安卓)studio下用gradle编译Andr
  9. SQLite(或LitePal)查询速度很慢原因分析

随机推荐

  1. 初识Laravel
  2. 安装laravel框架 了解laravel框架结构
  3. php常用字符串函数
  4. 意派Epub360丨教师节借势H5,有创意才更显
  5. c# 的判断文件夹是否存在/判断文件是否存
  6. 婚恋网后台资源路由的建立与使用 控制器
  7. 0902作业 常规形式定义婚恋网后台管理路
  8. 安装laravel框架
  9. 实战原生微信接入和消息回复
  10. react-redux源码不完全指北