Android实现的ListView分组布局改进示例
程序员文章站
2024-03-06 09:09:31
本文实例讲述了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程序设计有所帮助。
上一篇: springMVC几种页面跳转方式小结