android-ListView分组显示.doc_第1页
android-ListView分组显示.doc_第2页
android-ListView分组显示.doc_第3页
android-ListView分组显示.doc_第4页
android-ListView分组显示.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android ListView分组显示(整理)对于Listview的分组我们再熟悉不过了,因为Android自带的通讯录中的联系人信息就是使用的ListView分组,最近项目中用到了这个功能。所以趁着周末有时间,也更新下一篇这样的博客,希望对大家能够有帮助。 其实对于分组的ListView和我们平时用的ListView没有多大差别,就是需要在适配器中的getView方法中做下判断。只要理解了这个,下面就好说了,下面我们看下实现代码。 首先是main.xml布局:html 因为listview要加载两种不同的item,所以要实现两个item布局,addexam_list_item.xml:html 分组标签对应的布局addexam_list_item_tag.xmlhtml 布局文件我们已经实现了,下面看下在程序中我们是怎么处理的吧!html public class TestActivity extends Activity /* Called when the activity is first created. */ private List list=null; private List groupkey=new ArrayList(); private List aList = new ArrayList(); private List bList = new ArrayList(); private ListView listview; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); listview=(ListView) findViewById(R.id.listView_list); initData(); MyAdapter adapter=new MyAdapter(); listview.setAdapter(adapter); public void initData() list = new ArrayList(); groupkey.add(A组); groupkey.add(B组); for(int i=0; i5; i+) aList.add(A组+i); list.add(A组); list.addAll(aList); for(int i=0; i8; i+) bList.add(B组+i); list.add(B组); list.addAll(bList); private class MyAdapter extends BaseAdapter Override public int getCount() / TODO Auto-generated method stub return list.size(); Override public Object getItem(int position) / TODO Auto-generated method stub return list.get(position); Override public long getItemId(int position) / TODO Auto-generated method stub return position; Override public boolean isEnabled(int position) / TODO Auto-generated method stub if(groupkey.contains(getItem(position) return false; return super.isEnabled(position); Override public View getView(int position, View convertView, ViewGroup parent) / TODO Auto-generated method stub View view=convertView; if(groupkey.contains(getItem(position) view=LayoutInflater.from(getApplicationContext().inflate(R.layout.addexam_list_item_tag, null); else view=LayoutInflater.from(getApplicationContext().inflate(R.layout.addexam_list_item, null); TextView text=(TextView) view.findViewById(R.id.addexam_list_item_text); text.setText(CharSequence) getItem(position); return view; public class TestActivity extends Activity /* Called when the activity is first created. */private List list=null;private List groupkey=new ArrayList(); private List aList = new ArrayList(); private List bList = new ArrayList();private ListView listview; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); listview=(ListView) findViewById(R.id.listView_list); initData(); MyAdapter adapter=new MyAdapter(); listview.setAdapter(adapter); public void initData() list = new ArrayList(); groupkey.add(A组); groupkey.add(B组); for(int i=0; i5; i+) aList.add(A组+i); list.add(A组); list.addAll(aList); for(int i=0; i8; i+) bList.add(B组+i); list.add(B组); list.addAll(bList); private class MyAdapter extends BaseAdapterOverridepublic int getCount() / TODO Auto-generated method stubreturn list.size();Overridepublic Object getItem(int position) / TODO Auto-generated method stubreturn list.get(position);Overridepublic long getItemId(int position) / TODO Auto-generated method stubreturn position; Override public boolean isEnabled(int position) / TODO Auto-generated method stub if(groupkey.contains(getItem(position) return false; return super.isEnabled(position); Overridepublic View getView(int position, View convertView, ViewGroup parent) / TODO Auto-generated method stubView view=convertView;if(groupkey.contains(getItem(position)view=LayoutInflater.from(getApplicationContext().inflate(R.layout.addexam_list_item_tag, null);elseview=LayoutInflater.from(getApplicationContext().inflate(R.layout.addexam_list_item, null);TextView text=(TextView) view.findViewById(R.id.addexam_list_item_text);text.setText(CharSequence) getItem(position);return view; 代码好像挺简单,更我们平时使用lsitview也没多大区别,下面看看能不能实现呢运行一下:摘自 wangkuifeng0118的专栏、程序主界面 SeparateListView.javajavaview plaincopyprint? 1. packagewhu.iss.wuxianglong; 2. 3. importjava.util.ArrayList; 4. importjava.util.List; 5. 6. importandroid.app.Activity; 7. importandroid.content.Context; 8. importandroid.os.Bundle; 9. importandroid.view.LayoutInflater; 10. importandroid.view.View; 11. importandroid.view.ViewGroup; 12. importandroid.widget.ArrayAdapter; 13. importandroid.widget.ListView; 14. importandroid.widget.TextView; 15. 16. publicclassSeparateListViewextendsActivity 17. ListViewlistView; 18. MyAdaptermyAdapter; 19. publicListlistTag=newArrayList(); 20. 21. /*Calledwhentheactivityisfirstcreated.*/ 22. Override 23. publicvoidonCreate(BundlesavedInstanceState) 24. super.onCreate(savedInstanceState); 25. setContentView(R.layout.main); 26. 27. listView=(ListView)findViewById(R.id.list); 28. myAdapter=newMyAdapter(this, 29. android.R.layout.simple_expandable_list_item_1,getData(); 30. listView.setAdapter(myAdapter); 31. 32. privateListgetData() 33. Listdata=newArrayList(); 34. inti=0; 35. 36. data.add(A); 37. listTag.add(A); 38. data.add(aa试数据+(i+); 39. data.add(a试数据+(i+); 40. data.add(aa试数据+(i+); 41. listTag.add(B); 42. data.add(B); 43. data.add(bb试数据+(i+); 44. data.add(b试数据+(i+); 45. data.add(b试数据+(i+); 46. data.add(b试数据+(i+); 47. listTag.add(C); 48. data.add(C); 49. data.add(c测试数据+(i+); 50. data.add(c测试数据+(i+); 51. listTag.add(D); 52. data.add(D); 53. data.add(d测试数据+(i+); 54. data.add(d测试数据+(i+); 55. data.add(d测试数据+(i+); 56. listTag.add(E); 57. data.add(E); 58. data.add(e测试数据+(i+); 59. data.add(e测试数据+(i+); 60. data.add(e测试数据+(i+); 61. listTag.add(F); 62. data.add(F); 63. data.add(f测试数据+(i+); 64. returndata; 65. 66. 67. 68. classMyAdapterextendsArrayAdapter 69. 70. publicMyAdapter(Contextcontext,inttextViewResourceId, 71. Listobjects) 72. super(context,textViewResourceId,objects); 73. 74. 75. 76. Override 77. publicbooleanareAllItemsEnabled() 78. returnfalse; 79. 80. 81. Override 82. publicbooleanisEnabled(intposition) 83. /如果-开头,则该项不可选 84. return!listTag.contains(getItem(position); 85. 86. 87. Override 88. publicViewgetView(intposition,ViewconvertView,ViewGroupparent) 89. Viewview=convertView; 90. /根据标签类型加载不通的布局模板 91. if(listTag.contains(getItem(position) 92. /如果是标签项 93. view=LayoutInflater.from(getContext().inflate(R.layout.group_list_item_tag,null); 94. else 95. /否则就是数据项 96. view=LayoutInflater.from(getContext().inflate(R.layout.group_list_item,null); 97. 98. /显示名称 99. TextViewtextView=(TextView)view.findViewById(R.id.group_list_item_text); 100. textView.setText(getItem(position); 101. /返回重写的view 102. returnview; 103. 104. 105. 106. 2、程序主界面布局文件main.xmlhtmlview plaincopyprint? 1. 2. 7. 11. 12. 3、ListView中数据部分样式布局文件group_list_item.xmlhtmlview plaincopyprint? 1. 2. 7. 11. 12. 18. 19. 4、ListView中分组标志行的样式布局文件group_list_item_tag.xmlhtmlview plaincopyprint? 1. 2. 7. 13. 14. Listview显示数据查询后数据/TestListviewActivity.java 0203package com.androidtest; 0405import android.app.ListActivity; 06import android.content.Intent; 07import android.os.Bundle; 08import android.view.View; 09import android.widget.AdapterView; 10import android.widget.AdapterView.OnItemClickListener; 11import android.widget.ArrayAdapter; 12import android.widget.ListView; 1314public class TestListviewActivity extends ListActivity implements OnItemClickListener 15/* Called when the activity is first created. */16Override17public void onCreate(Bundle savedInstanceState) 18super.onCreate(savedInstanceState); 19ListView mListView = getListView(); 20mListView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,new String Item0,Item1,Item2,Item3,Item4,Item5,Item6,Item7,Item8,Item9); 21mListView.setOnItemClickListener(this); 22 2324Override25public void onItemClick(AdapterView parent, View view, int position, long id) 26Intent intent = new Intent(this,TargetAc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论