首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ListView 惯用方法

2012-06-27 
ListView 常用方法ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便

ListView 常用方法

ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅。

程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。

?

ListView 惯用方法

?

?

ListView 惯用方法

?

首先在xml里面定义一个ListView

?

Xml代码??ListView 惯用方法
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <LinearLayout???
  3. ????android:id="@+id/LinearLayout01"???
  4. ????android:layout_width="fill_parent"???
  5. ????android:layout_height="fill_parent"???
  6. ????xmlns:android="http://schemas.android.com/apk/res/android">??
  7. <ListView?android:layout_width="wrap_content"???
  8. ??????????android:layout_height="wrap_content"???
  9. ??????????android:id="@+id/ListView01"??
  10. ??????????/>??
  11. </LinearLayout>??

?

定义ListView每个条目的Layout,用RelativeLayout实现:

?

Xml代码??ListView 惯用方法
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <RelativeLayout???
  3. ????android:id="@+id/RelativeLayout01"???
  4. ????android:layout_width="fill_parent"???
  5. ????xmlns:android="http://schemas.android.com/apk/res/android"???
  6. ????android:layout_height="wrap_content"???
  7. ????android:paddingBottom="4dip"???
  8. ????android:paddingLeft="12dip"??
  9. ????android:paddingRight="12dip">??
  10. <ImageView???
  11. ????android:paddingTop="12dip"??
  12. ????android:layout_alignParentRight="true"??
  13. ????android:layout_width="wrap_content"???
  14. ????android:layout_height="wrap_content"???
  15. ????android:id="@+id/ItemImage"??
  16. ????/>???
  17. <TextView???
  18. ????android:text="TextView01"???
  19. ????android:layout_height="wrap_content"???
  20. ????android:textSize="20dip"???
  21. ????android:layout_width="fill_parent"???
  22. ????android:id="@+id/ItemTitle"??
  23. ????/>??
  24. <TextView???
  25. ????android:text="TextView02"???
  26. ????android:layout_height="wrap_content"???
  27. ????android:layout_width="fill_parent"???
  28. ????android:layout_below="@+id/ItemTitle"???
  29. ????android:id="@+id/ItemText"??
  30. ????/>??
  31. </RelativeLayout>??

?

?最后在Activity里面调用和加入Listener,具体见注释:

?

Java代码??ListView 惯用方法
  1. package?com.ray.test;??
  2. ??
  3. import?java.util.ArrayList;??
  4. import?java.util.HashMap;??
  5. ??
  6. import?android.app.Activity;??
  7. import?android.os.Bundle;??
  8. import?android.view.ContextMenu;??
  9. import?android.view.MenuItem;??
  10. import?android.view.View;??
  11. import?android.view.ContextMenu.ContextMenuInfo;??
  12. import?android.view.View.OnCreateContextMenuListener;??
  13. import?android.widget.AdapterView;??
  14. import?android.widget.ListView;??
  15. import?android.widget.SimpleAdapter;??
  16. import?android.widget.AdapterView.OnItemClickListener;??
  17. ??
  18. public?class?TestListView?extends?Activity?{??
  19. ????@Override??
  20. ????public?void?onCreate(Bundle?savedInstanceState)?{??
  21. ????????super.onCreate(savedInstanceState);??
  22. ????????setContentView(R.layout.main);??
  23. ????????//绑定Layout里面的ListView??
  24. ????????ListView?list?=?(ListView)?findViewById(R.id.ListView01);??
  25. ??????????
  26. ????????//生成动态数组,加入数据??
  27. ????????ArrayList<HashMap<String,?Object>>?listItem?=?new?ArrayList<HashMap<String,?Object>>();??
  28. ????????for(int?i=0;i<10;i++)??
  29. ????????{??
  30. ????????????HashMap<String,?Object>?map?=?new?HashMap<String,?Object>();??
  31. ????????????map.put("ItemImage",?R.drawable.checked);//图像资源的ID??
  32. ????????????map.put("ItemTitle",?"Level?"+i);??
  33. ????????????map.put("ItemText",?"Finished?in?1?Min?54?Secs,?70?Moves!?");??
  34. ????????????listItem.add(map);??
  35. ????????}??
  36. ????????//生成适配器的Item和动态数组对应的元素??
  37. ????????SimpleAdapter?listItemAdapter?=?new?SimpleAdapter(this,listItem,//数据源???
  38. ????????????R.layout.list_items,//ListItem的XML实现??
  39. ????????????//动态数组与ImageItem对应的子项??????????
  40. ????????????new?String[]?{"ItemImage","ItemTitle",?"ItemText"},???
  41. ????????????//ImageItem的XML文件里面的一个ImageView,两个TextView?ID??
  42. ????????????new?int[]?{R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}??
  43. ????????);??
  44. ?????????
  45. ????????//添加并且显示??
  46. ????????list.setAdapter(listItemAdapter);??
  47. ??????????
  48. ????????//添加点击??
  49. ????????list.setOnItemClickListener(new?OnItemClickListener()?{??
  50. ??
  51. ????????????@Override??
  52. ????????????public?void?onItemClick(AdapterView<?>?arg0,?View?arg1,?int?arg2,??
  53. ????????????????????long?arg3)?{??
  54. ????????????????setTitle("点击第"+arg2+"个项目");??
  55. ????????????}??
  56. ????????});??
  57. ??????????
  58. ??????//添加长按点击??
  59. ????????list.setOnCreateContextMenuListener(new?OnCreateContextMenuListener()?{??
  60. ??????????????
  61. ????????????@Override??
  62. ????????????public?void?onCreateContextMenu(ContextMenu?menu,?View?v,ContextMenuInfo?menuInfo)?{??
  63. ????????????????menu.setHeaderTitle("长按菜单-ContextMenu");?????
  64. ????????????????menu.add(0,?0,?0,?"弹出长按菜单0");??
  65. ????????????????menu.add(0,?1,?0,?"弹出长按菜单1");?????
  66. ????????????}??
  67. ????????});???
  68. ????}??
  69. ??????
  70. ????//长按菜单响应函数??
  71. ????@Override??
  72. ????public?boolean?onContextItemSelected(MenuItem?item)?{??
  73. ????????setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");???
  74. ????????return?super.onContextItemSelected(item);??
  75. ????}??
  76. }

热点排行