1、专注移动互联网专注移动互联网 分类: android 游戏与软件开发锦集 2011-07-26 23:17 3471人阅读 评论(33) 收藏 举报Android软件开发之ListView 详解雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:ListView的使用方法ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可以把列表中的数据映射到ListView中。
2、在android的开发中最Adapter 一共可以分为ArrayAdapter,BaseAdapter, CursorAdapter,HeaderViewListAdapter, ResourceCursorAdapter,SimpleAdapter,SimpleCursorAdapter,WrapperListAdapter软件开发中最常用的有ArrayAdapter,BaseAdapter,SimpleAdapter,今天我用一段代码向大家诠释如何使用ListView控件。1.简单的ListView 在List列表中如果不存在过于复杂的东西 我们可以直接去new ArrayAdapter(
3、) 来绘制列表,无须继承ArrayAdapter,重写它的方法。但是如果列表中过于复杂的话就需要使用自定义布局来实现List列表。1. publicclassSimpleListextendsListActivity2. privateStringmListStr=姓名:雨松MOMO,性别:男,年龄:25,居住地:北京,邮箱:xuanyusong;3. ListViewmListView=null;4. Override5. protectedvoidonCreate(BundlesavedInstanceState)6. mListView=getListView();7. setListA
4、dapter(newArrayAdapter(this,8. android.R.layout.simple_list_item_1,mListStr);9. mListView.setOnItemClickListener(newOnItemClickListener()10. Override11. publicvoidonItemClick(AdapterViewadapterView,Viewview,intposition,12. longid)13. Toast.makeText(SimpleList.this,您选择了+mListStrposition,Toast.LENGTH_
5、LONG).show();14. 15. );16. 17. super.onCreate(savedInstanceState);18. 19. 2.带标题的ListView列表 使用 simpleAdapter 需要注意的是须要用Map item 来保存列表中每一项的显示的title与text , new SimpleAdapter的时候将map中的数据写入 ,程序就会帮我们绘制列表了。1. publicclassTitleListextendsListActivity2. privateStringmListTitle=姓名,性别,年龄,居住地,邮箱;3. privateStringmL
6、istStr=雨松MOMO,男,25,北京,4. xuanyusong;5. ListViewmListView=null;6. ArrayListMapmData=newArrayListMap();7. 8. Override9. protectedvoidonCreate(BundlesavedInstanceState)10. mListView=getListView();11. 12. intlengh=mListTitle.length;13. for(inti=0;ilengh;i+)14. Mapitem=newHashMap();15. item.put(title,mLi
7、stTitlei);16. item.put(text,mListStri);17. mData.add(item);18. 19. SimpleAdapteradapter=newSimpleAdapter(this,mData,android.R.layout.simple_list_item_2,20. newStringtitle,text,newintandroid.R.id.text1,android.R.id.text2);21. setListAdapter(adapter);22. mListView.setOnItemClickListener(newOnItemClick
8、Listener()23. Override24. publicvoidonItemClick(AdapterViewadapterView,Viewview,intposition,25. longid)26. Toast.makeText(TitleList.this,您选择了标题:+mListTitleposition+内容:+mListStrposition,Toast.LENGTH_LONG).show();27. 28. );29. super.onCreate(savedInstanceState);30. 31. 3.带图片的ListView列表 使用 simpleAdapte
9、r 来操作 但是构造simpleAdapter的时候须要使用我们自己写的布局来完成 ,因为系统的布局已经不能满足需求了,同样Map item 来保存列表中每一项须要的显示内容 如 图片 标题 内容等。添加我们自己的列表布局 图片 标题 内容 1. 2. 3. 5. 10. 17. 24. 1. publicclassIconListextendsListActivity2. privateStringmListTitle=姓名,性别,年龄,居住地,邮箱;3. privateStringmListStr=雨松MOMO,男,25,北京,4. xuanyusong;5. ListViewmListV
10、iew=null;6. ArrayListMapmData=newArrayListMap();7. 8. Override9. protectedvoidonCreate(BundlesavedInstanceState)10. mListView=getListView();11. 12. intlengh=mListTitle.length;13. for(inti=0;ilengh;i+)14. Mapitem=newHashMap();15. item.put(image,R.drawable.jay);16. item.put(title,mListTitlei);17. item
11、.put(text,mListStri);18. mData.add(item);19. 20. SimpleAdapteradapter=newSimpleAdapter(this,mData,R.layout.iconlist,21. newStringimage,title,text,newintR.id.image,R.id.title,R.id.text);22. setListAdapter(adapter);23. mListView.setOnItemClickListener(newOnItemClickListener()24. Override25. publicvoid
12、onItemClick(AdapterViewadapterView,Viewview,intposition,26. longid)27. Toast.makeText(IconList.this,您选择了标题:+mListTitleposition+内容:+mListStrposition,Toast.LENGTH_LONG).show();28. 29. );30. super.onCreate(savedInstanceState);31. 32. 4.自定义布局BaseAdapter修改列表颜色 因为通过直接 构造系统的布局来绘制列表方法肯定是有限的,所以我们需要重写绘制方法 ,写一
13、个类去继承BaseAdapter 并实现这个类中的方法,listView在一开始绘制的时候首先会调用getCout()方法得到绘制次数 ,然后会实例化自己定义的BaseAdapter通过getView()方法一层一层绘制ListView,所以我们可以在这里面根据position(当前绘制的ID)来任意的修改绘制的内容,做出好看漂亮的ListView,下面这个例子我通过重写getView修改每个列表的颜色 并且实现用户选中后成高亮状态。1. 2. 3. 5. 10. 17. 26. 27. 28. 1. publicclassColorListextendsListActivity2. priv
14、ateStringmListTitle=姓名,性别,年龄,居住地,邮箱;3. privateStringmListStr=雨松MOMO,男,25,北京,4. xuanyusong;5. ListViewmListView=null;6. MyListAdaptermyAdapter=null;7. Override8. protectedvoidonCreate(BundlesavedInstanceState)9. mListView=getListView();10. myAdapter=newMyListAdapter(this);11. setListAdapter(myAdapter
15、);12. mListView.setOnItemClickListener(newOnItemClickListener()13. Override14. publicvoidonItemClick(AdapterViewadapterView,Viewview,intposition,15. longid)16. Viewv=adapterView.getChildAt(position);17. v.setBackgroundColor(Color.RED);18. Toast.makeText(ColorList.this,您选择了+mListStrposition,Toast.LEN
16、GTH_LONG).show();19. 20. );21. 22. super.onCreate(savedInstanceState);23. 24. 25. classMyListAdapterextendsBaseAdapter26. privateintcolors=newint0xff626569,0xff4f5257;27. publicMyListAdapter(Contextcontext)28. mContext=context;29. 30. 31. publicintgetCount()32. returnmListStr.length;33. 34. 35. Override36. publicbooleanareAllItemsEnabled()37. returnfalse;38. 39. 40. publicObjectgetItem(intposition)41. returnposition;42. 43. 44. publiclonggetItemId(intposition)45. return
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1