欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现的ListView分组布局改进示例

程序员文章站 2024-03-06 09:09:31
本文实例讲述了android实现的listview分组布局改进方法。分享给大家供大家参考,具体如下: 由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效...

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

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

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<string> listtag = new arraylist<string>();
  /** 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<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;
  }
  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;
    }
  }
}

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

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <listview
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
  </listview>
</linearlayout>

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

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:padding="5dip">
  <imageview
    android:src="@drawable/icon"
    android:layout_width="50px"
    android:layout_height="50px">
  </imageview>
  <textview
    android:id="@+id/group_list_item_text"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:paddingleft="5dip"
    android:gravity="center_vertical">
  </textview>
</linearlayout>

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

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="#555555"
  android:paddingleft="10dip">
  <textview
    android:id="@+id/group_list_item_text"
    android:layout_width="wrap_content"
    android:layout_height="20dip"
    android:textcolor="#ffffff"
    android:gravity="center_vertical">
  </textview>
</linearlayout>

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

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