当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现的ListView分组布局改进示例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

dism,口语英语,赛巴安

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网