运行效果:
Android 列表之分组ListView

main.xml

Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="horizontal"android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <ListViewandroid:layout_width="fill_parent"
  6. android:layout_height="wrap_content"android:id="@+id/MyListView">
  7. </ListView>
  8. </LinearLayout>



list_items.xml

Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"android:id="@+id/myListItem"
  5. android:paddingBottom="4dip"android:paddingLeft="12dip"
  6. android:paddingRight="12dip">
  7. <TextViewandroid:layout_height="wrap_content"
  8. android:layout_width="fill_parent"android:id="@+id/itemTitle"
  9. android:textSize="20dip"/>
  10. </LinearLayout>



list_items_tag.xml

Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"android:layout_height="wrap_content"
  4. android:background="#555555"android:paddingLeft="10dip">
  5. <TextViewandroid:id="@+id/itemTitle"android:layout_width="wrap_content"
  6. android:layout_height="20dip"android:textColor="#ffffff"
  7. android:gravity="center_vertical"/>
  8. </LinearLayout>



MyAdapter.java

Java代码 收藏代码
  1. packagecom.iaiai;
  2. importjava.util.List;
  3. importjava.util.Map;
  4. importandroid.content.Context;
  5. importandroid.view.LayoutInflater;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.BaseAdapter;
  9. importandroid.widget.TextView;
  10. /**
  11. *
  12. *<p>
  13. *Title:MyAdapter.java
  14. *</p>
  15. *<p>
  16. *E-Mail:176291935@qq.com
  17. *</p>
  18. *<p>
  19. *QQ:176291935
  20. *</p>
  21. *<p>
  22. *Http:iaiai.iteye.com
  23. *</p>
  24. *<p>
  25. *Createtime:2011-10-10
  26. *</p>
  27. *
  28. *@author丸子
  29. *@version0.0.1
  30. */
  31. publicclassMyAdapterextendsBaseAdapter{
  32. privateLayoutInflatermInflater;
  33. privateList<Map<String,String>>listData;
  34. privateList<Map<String,String>>splitData;
  35. publicMyAdapter(Contextcontext,
  36. List<Map<String,String>>listData,
  37. List<Map<String,String>>splitData){
  38. this.mInflater=LayoutInflater.from(context);
  39. this.listData=listData;
  40. this.splitData=splitData;
  41. }
  42. @Override
  43. publicintgetCount(){
  44. returnlistData.size();
  45. }
  46. @Override
  47. publicObjectgetItem(intposition){
  48. returnlistData.get(position);
  49. }
  50. @Override
  51. publiclonggetItemId(intposition){
  52. returnposition;
  53. }
  54. @Override
  55. publicbooleanisEnabled(intposition){
  56. if(splitData.contains(listData.get(position))){
  57. returnfalse;
  58. }
  59. returnsuper.isEnabled(position);
  60. }
  61. @Override
  62. publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
  63. if(splitData.contains(listData.get(position))){
  64. convertView=mInflater.inflate(R.layout.list_items_tag,null);
  65. }else{
  66. convertView=mInflater.inflate(R.layout.list_items,null);
  67. }
  68. TextViewtextView=(TextView)convertView.findViewById(R.id.itemTitle);
  69. textView.setText(listData.get(position).get("itemTitle"));
  70. returnconvertView;
  71. }
  72. }



MainActivity.java

Java代码 收藏代码
  1. packagecom.iaiai;
  2. importjava.util.ArrayList;
  3. importjava.util.HashMap;
  4. importjava.util.List;
  5. importjava.util.Map;
  6. importandroid.app.Activity;
  7. importandroid.os.Bundle;
  8. importandroid.widget.ListView;
  9. /**
  10. *
  11. *<p>
  12. *Title:MainActivity.java
  13. *</p>
  14. *<p>
  15. *E-Mail:176291935@qq.com
  16. *</p>
  17. *<p>
  18. *QQ:176291935
  19. *</p>
  20. *<p>
  21. *Http:iaiai.iteye.com
  22. *</p>
  23. *<p>
  24. *Createtime:2011-10-10
  25. *</p>
  26. *
  27. *@author丸子
  28. *@version0.0.1
  29. */
  30. publicclassMainActivityextendsActivity{
  31. privateList<Map<String,String>>mylist=newArrayList<Map<String,String>>();
  32. privateList<Map<String,String>>splitList=newArrayList<Map<String,String>>();
  33. @Override
  34. protectedvoidonCreate(BundlesavedInstanceState){
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.main);
  37. ListViewlist=(ListView)findViewById(R.id.MyListView);
  38. setData();//设置数据
  39. //配置适配器
  40. MyAdapteradapter=newMyAdapter(this,mylist,splitList);//布局里的控件id
  41. //添加并且显示
  42. list.setAdapter(adapter);
  43. }
  44. privatevoidsetData(){
  45. //组织数据源
  46. Map<String,String>mp=newHashMap<String,String>();
  47. mp.put("itemTitle","A");
  48. mylist.add(mp);
  49. splitList.add(mp);
  50. for(inti=0;i<3;i++){
  51. Map<String,String>map=newHashMap<String,String>();
  52. map.put("itemTitle","文章1-"+i);
  53. mylist.add(map);
  54. }
  55. mp=newHashMap<String,String>();
  56. mp.put("itemTitle","B");
  57. mylist.add(mp);
  58. splitList.add(mp);
  59. for(inti=0;i<6;i++){
  60. Map<String,String>map=newHashMap<String,String>();
  61. map.put("itemTitle","文章2-"+i);
  62. mylist.add(map);
  63. }
  64. }
  65. }



========================================================================
以上为示例所有代码,以下为说明

禁止标签项的响应事件,父类BaseAdapter中提供了isEnable的()方法,我们看看这个方法:

Java代码 收藏代码
  1. //默认情况,如果这个方法不是分割符,返回true
  2. //分隔符是无选中和无点击事件的
  3. //说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true
  4. publicbooleanisEnabled(intposition)


这个方法刚好用来禁用标签项的响应事件。

Java代码 收藏代码
  1. @Override
  2. publicbooleanisEnabled(intposition){
  3. if(splitData.contains(listData.get(position))){
  4. returnfalse;
  5. }
  6. returnsuper.isEnabled(position);
  7. }


现在标签项不会再有任何触控效果了,犹如一块死木板。

更多相关文章

  1. android 实现流媒体播放远程mp3文件代码
  2. Android实现模拟点击的一种方法
  3. Android scrollview嵌套listview 滑动事件冲突的解决方法
  4. Android Studio sync 失败解决方法
  5. Android 代码中实现返回键功能

随机推荐

  1. Android(安卓)系统移植与调试(一)Android编
  2. Android(安卓)root 原理
  3. 又议android中的manifest清单文件
  4. 关于Android中工作者线程的思考
  5. Android(安卓)版本适配6.0到9.0
  6. 認識 高煥堂老師
  7. Handler android~~
  8. Android(安卓)获取应用的安装时间及更新
  9. 对Android(安卓)canvas的一点粗浅理解
  10. Android(安卓)动态权限申请之 shouldShow