AndroidUI系统之 ListView篇

移动开发 Android
本文将从一下几个方面介绍AndroidUI下的 ListView:分别是:使用XML布局文件来定义ListView的样式,使用XML布局文件来定义ListViewItem的样式,以及为ListView添加Click事件。只需要在MainActivity中实现onListItemClick()方法

1.创建一个项目:ListViewLearn

2.修改MainActivity,继承于ListActivity

3.创建一个String数组,用来保存ListView中的现实内容

  1. package com.learn.listviewlearn.utility; 
  2.  
  3. public class Util { 
  4.     public static final String[] COUNTRYS = { "中国""美国""俄罗斯""英国""法国" }; 

4.修改onCreate方法,设置一个Adapter,数组中的内容在ListView中现实出来

  1. @Override 
  2.   protected void onCreate(Bundle savedInstanceState) { 
  3.       super.onCreate(savedInstanceState); 
  4.       // setContentView(R.layout.activity_main); 
  5.       this.setListAdapter(new ArrayAdapter<String>(this
  6.               android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); 
  7.   }

二、使用XML布局文件来定义ListView的样式

1.修改activity_main.xml文件,添加一个ListView,id必须为android:id="@android:id/list"

  1. LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:layout_width="fill_parent" 
  3.     android:layout_height="fill_parent" 
  4.     android:orientation="vertical" > 
  5.  
  6.     <ListView 
  7.         android:id="@android:id/list" 
  8.         android:layout_width="fill_parent" 
  9.         android:layout_height="fill_parent" 
  10.         android:background="#FFFFFF00" > 
  11.     </ListView> 
  12.  
  13. </LinearLayout> 

2.修改OnCreate方法

  1. @Override 
  2.   protected void onCreate(Bundle savedInstanceState) { 
  3.       super.onCreate(savedInstanceState); 
  4.       setContentView(R.layout.activity_main); 
  5.       this.setListAdapter(new ArrayAdapter<String>(this
  6.               android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); 
  7.   }

三、使用XML布局文件来定义ListViewItem的样式

 1.首先创建一个list_view.xml的布局文件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="horizontal" > 
  6.  
  7.     <ImageView 
  8.         android:id="@+id/imageViewIcon" 
  9.         android:layout_width="wrap_content" 
  10.         android:layout_height="wrap_content" 
  11.         android:contentDescription="@string/icon" > 
  12.     </ImageView> 
  13.  
  14.     <TextView 
  15.         android:id="@+id/textViewContent" 
  16.         android:layout_width="wrap_content" 
  17.         android:layout_height="wrap_content" > 
  18.     </TextView> 
  19.  
  20. </LinearLayout> 

2.然后创建一个Adapter继承于BaseAdapter,主要修改getCount()和getView()方法

  1. package com.learn.listviewlearn.adapter; 
  2.  
  3. import com.learn.listviewlearn.R; 
  4. import com.learn.listviewlearn.utility.Util; 
  5.  
  6. import android.content.Context; 
  7. import android.view.LayoutInflater; 
  8. import android.view.View; 
  9. import android.view.ViewGroup; 
  10. import android.widget.BaseAdapter; 
  11. import android.widget.ImageView; 
  12. import android.widget.TextView; 
  13.  
  14. public class ListViewAdapter extends BaseAdapter { 
  15.     private Context context; 
  16.  
  17.     public ListViewAdapter() { 
  18.         // TODO Auto-generated constructor stub 
  19.     } 
  20.  
  21.     @Override 
  22.     public int getCount() { 
  23.         return Util.COUNTRYS.length; 
  24.     } 
  25.  
  26.     @Override 
  27.     public Object getItem(int position) { 
  28.         // TODO Auto-generated method stub 
  29.         return null
  30.     } 
  31.  
  32.     @Override 
  33.     public long getItemId(int position) { 
  34.         // TODO Auto-generated method stub 
  35.         return 0
  36.     } 
  37.  
  38.     @Override 
  39.     public View getView(int position, View convertView, ViewGroup parent) { 
  40.         if (convertView == null) { 
  41.             convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null); 
  42.             ItemViewCache itemViewCache = new ItemViewCache(); 
  43.             itemViewCache.imageView = (ImageView)convertView.findViewById(R.id.imageViewIcon); 
  44.             itemViewCache.textView = (TextView)convertView.findViewById(R.id.textViewContent); 
  45.             convertView.setTag(itemViewCache); 
  46.         } 
  47.          
  48.         ItemViewCache cache = (ItemViewCache) convertView.getTag(); 
  49.  
  50.         cache.imageView.setImageResource(Util.images[position]); 
  51.         cache.textView.setText(Util.COUNTRYS[position]); 
  52.         return convertView; 
  53.     } 
  54.      
  55.     private static class ItemViewCache{ 
  56.         public TextView textView; 
  57.         public ImageView imageView; 
  58.     } 
  59.  

Util.java

  1. package com.learn.listviewlearn.utility; 
  2.  
  3. import com.learn.listviewlearn.R; 
  4.  
  5. public class Util { 
  6.     public static final String[] COUNTRYS = { "中国""美国""俄罗斯""英国""法国" }; 
  7.     public static final int[] images = { R.drawable.ic_launcher, 
  8.             R.drawable.ic_launcher, R.drawable.ic_launcher, 
  9.             R.drawable.ic_launcher, R.drawable.ic_launcher }; 
  10. }

四、为ListView添加Click事件。只需要在MainActivity中实现onListItemClick()方法

  1. @Override 
  2.     protected void onListItemClick(ListView l, View v, int position, long id) { 
  3.         Toast.makeText(this"你选择了" + Util.COUNTRYS[position], Toast.LENGTH_SHORT) 
  4.                 .show(); 
  5.     } 

 

本文链接:http://www.cnblogs.com/zhangtingkuo/archive/2014/08/01/3884689.html

责任编辑:chenqingxiang 来源: cnblogs
相关推荐

2013-02-26 09:14:52

2010-12-24 13:25:44

Linux性能监控CPU

2010-06-25 09:47:29

Linux系统监控

2013-09-17 14:00:19

AndroidListView原理

2011-01-14 15:32:17

2010-06-12 16:18:49

机房空调基础知识

2010-11-18 10:08:17

Android

2011-02-25 10:25:07

Proftpd

2011-02-25 10:36:12

Proftpd

2012-06-20 13:54:44

架构性能优化

2024-02-02 10:38:06

虚拟文件系统VFS

2011-05-27 15:02:15

Android ListView

2021-12-08 09:11:41

前端

2021-09-06 06:45:06

WebpackMindMasterEntry

2014-09-01 10:36:35

个推推送

2021-09-06 06:45:06

Webpack优化MindMaster

2011-03-02 14:07:24

Pureftpd

2009-11-06 16:48:03

WCF简介

2014-06-09 14:18:24

2018-08-31 21:35:26

iOSUI设计师设计
点赞
收藏

51CTO技术栈公众号