ListView的使用方法 

ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可以把列表中的数据映射到ListView中。
在android的开发中最Adapter 一共可以分为
ArrayAdapter<T>,
BaseAdapter, 
CursorAdapter,
HeaderViewListAdapter, 
ResourceCursorAdapter,
SimpleAdapter,
SimpleCursorAdapter,
WrapperListAdapter
软件开发中最常用的有ArrayAdapter<T>, BaseAdapter, SimpleAdapter,今天我用一段代码向大家诠释如何使用ListView控件。

1.简单的ListView

在List列表中如果不存在过于复杂的东西 我们可以直接去new ArrayAdapter() 来绘制列表,无须继承ArrayAdapter,重写它的方法。但是如果列表中过于复杂的话就需要使用自定义布局来实现List列表。

 
  1. public class SimpleList extends ListActivity {
  2. private String[] mListStr = {"姓名:雨松MOMO","性别:男","年龄:25","居住地:北京","邮箱:xuanyusong@gmail.com"};
  3. ListView mListView = null;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. mListView = getListView();
  7. setListAdapter(new ArrayAdapter<String>(this,
  8. android.R.layout.simple_list_item_1, mListStr));
  9. mListView.setOnItemClickListener(new OnItemClickListener() {
  10. @Override
  11. public void onItemClick(AdapterView<?> adapterView, View view, int position,
  12. long id) {
  13. Toast.makeText(SimpleList.this,"您选择了" + mListStr[position], Toast.LENGTH_LONG).show();
  14. }
  15. });
  16. super.onCreate(savedInstanceState);
  17. }
  18. }

2.带标题的ListView列表

使用 simpleAdapter 需要注意的是须要用Map<String,Object> item 来保存列表中每一项的显示的title与text , new SimpleAdapter的时候将map中的数据写入 ,程序就会帮我们绘制列表了。

  1. public class TitleList extends ListActivity {
  2. private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};
  3. private String[] mListStr = { "雨松MOMO", "男", "25", "北京",
  4. "xuanyusong@gmail.com" };
  5. ListView mListView = null;
  6. ArrayList<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. mListView = getListView();
  10. int lengh = mListTitle.length;
  11. for(int i =0; i < lengh; i++) {
  12. Map<String,Object> item = new HashMap<String,Object>();
  13. item.put("title", mListTitle[i]);
  14. item.put("text", mListStr[i]);
  15. mData.add(item);
  16. }
  17. SimpleAdapter adapter = new SimpleAdapter(this,mData,android.R.layout.simple_list_item_2,
  18. new String[]{"title","text"},new int[]{android.R.id.text1,android.R.id.text2});
  19. setListAdapter(adapter);
  20. mListView.setOnItemClickListener(new OnItemClickListener() {
  21. @Override
  22. public void onItemClick(AdapterView<?> adapterView, View view, int position,
  23. long id) {
  24. Toast.makeText(TitleList.this,"您选择了标题:" + mListTitle[position] + "内容:"+mListStr[position], Toast.LENGTH_LONG).show();
  25. }
  26. });
  27. super.onCreate(savedInstanceState);
  28. }
  29. }

3.带图片的ListView列表

使用 simpleAdapter 来操作 但是构造simpleAdapter的时候须要使用我们自己写的布局来完成 ,因为系统的布局已经不能满足需求了,同样Map<String,Object> item 来保存列表中每一项须要的显示内容 如 图片 标题 内容等。

添加我们自己的列表布局 图片 标题 内容 
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight">
  4. <ImageView android:id="@+id/image"
  5. android:layout_width="wrap_content" android:layout_height="fill_parent"
  6. android:layout_alignParentTop="true" android:layout_alignParentBottom="true"
  7. android:adjustViewBounds="true"
  8. android:padding="2dip" />
  9. <TextView android:id="@+id/title"
  10. android:layout_width="wrap_content" android:layout_height="wrap_content"
  11. android:layout_toRightOf="@+id/image"
  12. android:layout_alignParentRight="true" android:layout_alignParentTop="true"
  13. android:layout_above="@+id/text"
  14. android:layout_alignWithParentIfMissing="true" android:gravity="center_vertical"
  15. android:textSize="15dip" />
  16. <TextView android:id="@+id/text"
  17. android:layout_width="fill_parent" android:layout_height="wrap_content"
  18. android:layout_toRightOf="@+id/image"
  19. android:layout_alignParentBottom="true"
  20. android:layout_alignParentRight="true" android:singleLine="true"
  21. android:ellipsize="marquee"
  22. android:textSize="20dip" />
  23. </RelativeLayout>
  1. public class IconList extends ListActivity {
  2. private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};
  3. private String[] mListStr = { "雨松MOMO", "男", "25", "北京",
  4. "xuanyusong@gmail.com" };
  5. ListView mListView = null;
  6. ArrayList<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. mListView = getListView();
  10. int lengh = mListTitle.length;
  11. for(int i =0; i < lengh; i++) {
  12. Map<String,Object> item = new HashMap<String,Object>();
  13. item.put("image", R.drawable.jay);
  14. item.put("title", mListTitle[i]);
  15. item.put("text", mListStr[i]);
  16. mData.add(item);
  17. }
  18. SimpleAdapter adapter = new SimpleAdapter(this,mData,R.layout.iconlist,
  19. new String[]{"image","title","text"},new int[]{R.id.image,R.id.title,R.id.text});
  20. setListAdapter(adapter);
  21. mListView.setOnItemClickListener(new OnItemClickListener() {
  22. @Override
  23. public void onItemClick(AdapterView<?> adapterView, View view, int position,
  24. long id) {
  25. Toast.makeText(IconList.this,"您选择了标题:" + mListTitle[position] + "内容:"+mListStr[position], Toast.LENGTH_LONG).show();
  26. }
  27. });
  28. super.onCreate(savedInstanceState);
  29. }
  30. }

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="wrap_content">
  4. <ImageView android:id="@+id/color_image"
  5. android:layout_width="wrap_content" android:layout_height="fill_parent"
  6. android:layout_alignParentTop="true" android:layout_alignParentBottom="true"
  7. android:adjustViewBounds="true"
  8. android:padding="2dip" />
  9. <TextView android:id="@+id/color_title"
  10. android:layout_width="fill_parent" android:layout_height="wrap_content"
  11. android:layout_toRightOf="@+id/color_image"
  12. android:layout_alignParentBottom="true"
  13. android:layout_alignParentRight="true" android:singleLine="true"
  14. android:ellipsize="marquee"
  15. android:textSize="15dip"  />
  16. <TextView android:id="@+id/color_text"
  17. android:layout_width="fill_parent" android:layout_height="wrap_content"
  18. android:layout_toRightOf="@+id/color_image"
  19. android:layout_below="@+id/color_title"
  20. android:layout_alignParentBottom="true"
  21. android:layout_alignParentRight="true"
  22. android:singleLine="true"
  23. android:ellipsize="marquee"
  24. android:textSize="20dip" />
  25. </RelativeLayout>
  1. public class ColorList extends ListActivity {
  2. private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};
  3. private String[] mListStr = { "雨松MOMO", "男", "25", "北京",
  4. "xuanyusong@gmail.com" };
  5. ListView mListView = null;
  6. MyListAdapter myAdapter = null;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. mListView = getListView();
  10. myAdapter = new MyListAdapter(this);
  11. setListAdapter(myAdapter);
  12. mListView.setOnItemClickListener(new OnItemClickListener() {
  13. @Override
  14. public void onItemClick(AdapterView<?> adapterView, View view, int position,
  15. long id) {
  16. View v=adapterView.getChildAt(position);
  17. v.setBackgroundColor(Color.RED);
  18. Toast.makeText(ColorList.this,"您选择了" + mListStr[position], Toast.LENGTH_LONG).show();
  19. }
  20. });
  21. super.onCreate(savedInstanceState);
  22. }
  23. class MyListAdapter extends BaseAdapter {
  24. private int[] colors = new int[] { 0xff626569, 0xff4f5257 };
  25. public MyListAdapter(Context context) {
  26. mContext = context;
  27. }
  28. public int getCount() {
  29. return mListStr.length;
  30. }
  31. @Override
  32. public boolean areAllItemsEnabled() {
  33. return false;
  34. }
  35. public Object getItem(int position) {
  36. return position;
  37. }
  38. public long getItemId(int position) {
  39. return position;
  40. }
  41. public View getView(int position, View convertView, ViewGroup parent) {
  42. ImageView iamge = null;
  43. TextView title = null;
  44. TextView text = null;
  45. if (convertView == null) {
  46. convertView = LayoutInflater.from(mContext).inflate(R.layout.colorlist, null);
  47. iamge = (ImageView) convertView.findViewById(R.id.color_image);
  48. title =(TextView) convertView.findViewById(R.id.color_title);
  49. text= (TextView) convertView.findViewById(R.id.color_text);
  50. }
  51. int colorPos = position % colors.length;
  52. convertView.setBackgroundColor(colors[colorPos]);
  53. title.setText(mListTitle[position]);
  54. text.setText(mListStr[position]);
  55. iamge.setImageResource(R.drawable.jay);
  56. return convertView;
  57. }
  58. private Context mContext;
  59. }
  60. }
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="wrap_content">
  4. <Button
  5. android:id="@+id/array_button"
  6. android:layout_width="wrap_content"
  7. android:layout_height="wrap_content"
  8. android:text="一个按钮"
  9. />
  10. <ImageView android:id="@+id/array_image"
  11. android:layout_toRightOf="@+id/array_button"
  12. android:layout_width="wrap_content" android:layout_height="fill_parent"
  13. android:layout_alignParentTop="true" android:layout_alignParentBottom="true"
  14. android:adjustViewBounds="true"
  15. android:padding="2dip" />
  16. <TextView android:id="@+id/array_title"
  17. android:layout_width="fill_parent" android:layout_height="wrap_content"
  18. android:layout_toRightOf="@+id/array_image"
  19. android:layout_alignParentBottom="true"
  20. android:layout_alignParentRight="true" android:singleLine="true"
  21. android:ellipsize="marquee"
  22. android:textSize="15dip"  />
  23. <TextView android:id="@+id/array_text"
  24. android:layout_width="fill_parent" android:layout_height="wrap_content"
  25. android:layout_toRightOf="@+id/array_image"
  26. android:layout_below="@+id/array_title"
  27. android:layout_alignParentBottom="true"
  28. android:layout_alignParentRight="true"
  29. android:singleLine="true"
  30. android:ellipsize="marquee"
  31. android:textSize="20dip" />
  32. </RelativeLayout>
  1. public class ArrayList extends ListActivity {
  2. private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};
  3. private String[] mListStr = { "雨松MOMO", "男", "25", "北京",
  4. "xuanyusong@gmail.com" };
  5. ListView mListView = null;
  6. MyListAdapter myAdapter = null;
  7. ArrayList arrayList = null;
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. arrayList = this;
  11. mListView = getListView();
  12. myAdapter = new MyListAdapter(this,R.layout.arraylist);
  13. setListAdapter(myAdapter);
  14. super.onCreate(savedInstanceState);
  15. }
  16. public class MyListAdapter extends ArrayAdapter<Object> {
  17. int mTextViewResourceID = 0;
  18. private Context mContext;
  19. public MyListAdapter(Context context, int textViewResourceId) {
  20. super(context, textViewResourceId);
  21. mTextViewResourceID = textViewResourceId;
  22. mContext = context;
  23. }
  24. private int[] colors = new int[] { 0xff626569, 0xff4f5257 };
  25. public int getCount() {
  26. return mListStr.length;
  27. }
  28. @Override
  29. public boolean areAllItemsEnabled() {
  30. return false;
  31. }
  32. public Object getItem(int position) {
  33. return position;
  34. }
  35. public long getItemId(int position) {
  36. return position;
  37. }
  38. public View getView(final int position, View convertView, ViewGroup parent) {
  39. ImageView iamge = null;
  40. TextView title = null;
  41. TextView text = null;
  42. Button button = null;
  43. if (convertView == null) {
  44. convertView = LayoutInflater.from(mContext).inflate(
  45. mTextViewResourceID, null);
  46. iamge = (ImageView) convertView.findViewById(R.id.array_image);
  47. title = (TextView) convertView.findViewById(R.id.array_title);
  48. text = (TextView) convertView.findViewById(R.id.array_text);
  49. button = (Button)convertView.findViewById(R.id.array_button);
  50. button.setOnClickListener(new OnClickListener() {
  51. @Override
  52. public void onClick(View arg0) {
  53. Toast.makeText(arrayList,"您点击的第"+position +"个按钮", Toast.LENGTH_LONG).show();
  54. }
  55. });
  56. }
  57. int colorPos = position % colors.length;
  58. convertView.setBackgroundColor(colors[colorPos]);
  59. title.setText(mListTitle[position]);
  60. text.setText(mListStr[position]);
  61. if(colorPos == 0)
  62. iamge.setImageResource(R.drawable.jay);
  63. else
  64. iamge.setImageResource(R.drawable.image);
  65. return convertView;
  66. }
  67. }
  68. }

本文出自 “雨松MOMO的程序世界” 博客,请务必保留此出处http://xys289187120.blog.51cto.com/3361352/657171

Android软件开发之ListView 详解【转】的更多相关文章

  1. 【Android】Android软件开发之ListView 详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xys289187120.blog.51cto.com/3361352/65717 ...

  2. Android软件开发之EditText 详解(八)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xys289187120.blog.51cto.com/3361352/65718 ...

  3. Android软件开发之EditText 详解

    EditText在API中的结构 java.lang.Objectandroid.view.Viewandroid.widget.TextView        android.widget.Edit ...

  4. Android开发之ListView详解 以及简单的listView优化

    ListView列表视图 最常用的控件之一,使用场景例如:微信,手机QQ等等. android:divider:每个item之间的分割线,可以使用图片或者色值. android:dividerHeig ...

  5. Android开发之InstanceState详解

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  6. Android开发之InstanceState详解(转)---利用其保存Activity状态

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  7. Android开发之MdiaPlayer详解

    Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...

  8. android软件开发之webView.addJavascriptInterface循环渐进【一】

    本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...

  9. android软件开发之webView.addJavascriptInterface循环渐进【二】

    本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...

随机推荐

  1. Html 5 Web Storage

    HTML5 中使用Web Storage 技术进行本地存储,能够在Web 客户端进行数据存储.WebStorage 曾今属于HTML5的规范,目前已经被独立出来形成单独的规范体系.简单来说使用Web本 ...

  2. MYsql 数据库密码忘记(Linux)

    在Linux 上面装上了 Mysql 数据库,但是发现密码忘了,悲催,解决方法跟Window系统下一样的, 不管是哪个操作系统处理的思路是相同的,就是首先要把mysql的权限去掉,这样即使忘了密码,不 ...

  3. 关于安装teamviewer11出现verification of your teamviewer version failed错误处理

    关于安装teamviewer11出现verification of your teamviewer version failed错误处理 teamviewer 在ubuntu 中安装方法是: 去tea ...

  4. ppmoney 总结二

    1. return false   ES6函数的扩展:箭头函数  数组 arr.map()   arr.filter() <!DOCTYPE html> <html lang=&qu ...

  5. V4.0到来了,css雪碧图生成工具4.0更新啦

    V3.0介绍 http://www.cnblogs.com/wang4517/p/4476758.html V4.0更新内容 V4.0下载地址:http://download.csdn.net/det ...

  6. [UWP]UWP App Data存储和获取

    这篇博客介绍如何在UWP开发时,如何存储App Data和获取. App Data是指用户的一些设定,偏好等.例如,App的主题,是否接收推送,离线接收消息等.需要区分下App Data和User D ...

  7. MachineKey 操作 之 应用集群中SSO应用生成MachineKey

    MachineKey介绍 MachineKey其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,一般情况下IIS自动默认给网站或者每一个应用生成唯一的MachineKey ...

  8. LinkedHashMap源码阅读笔记(基于jdk1.8)

    LinkedHashMap是HashMap的子类,很多地方都是直接引用HashMap中的方法,所以需要注意的地方并不多.关键的点就是几个重写的方法: 1.Entry是继承与Node类,也就是Linke ...

  9. webform简单、复合控件

    简单控件: 1.Label 会被编译成span标签 属性: Text:文本内容 CssClass:CSS样式 Enlabled:是否可用 Visible:是否可见 2.Literal 空的,C#会把里 ...

  10. CVE-2015-7645 analyze and exploit

    Hack team之后adobe和google合作对flash进行了大改,一度提高了flash的利用门槛,CVE-2015-7645作为第一个突破这些限制的漏洞利用方式,可以作为vetect利用方式之 ...