ListView是Android一系列组件之一,它以垂直列表的方式列出所需的列表项。实现方式有两种:
 * 第一种:使用ListView组件
 * 第二种:当前的Activity继承ListActivity

  ListView是需要绑定数据源的----->ArrayAdapter、SimpleAdapter、SimpleCursorAdapter

需要注意的是SimpleCursorAdapter要以数据库作为数据源的时候才使用。

来自SDK的描述:

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.

接下来就三种不同的数据源我写了一个例子,和大家一起来好好学习一下ListView。

首先,新建一个Android项目--->取名ListViewDemo

MainActivity.java的代码如下:

   
  1. public class MainActivity extends Activity implements OnClickListener{  
  2.     private Button btnArray,btnSimple,btnSimpleCursor;  
  3.     /** Called when the activity is first created. */  
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.           
  9.         getWidgetInstance();  
  10.           
  11.         btnArray.setOnClickListener(this);  
  12.         btnSimple.setOnClickListener(this);  
  13.         btnSimpleCursor.setOnClickListener(this);  
  14.     }  
  15.       
  16.     public void getWidgetInstance() {  
  17.         btnArray = (Button)findViewById(R.id.btnArray);  
  18.         btnSimple = (Button)findViewById(R.id.btnSimple);  
  19.         btnSimpleCursor = (Button)findViewById(R.id.btnSimpleCursor);  
  20.     }  
  21.  
  22.     @Override  
  23.     public void onClick(View v) {  
  24.         int id = v.getId();  
  25.         switch(id) {  
  26.         case R.id.btnArray:  
  27.             Intent intent_array = new Intent(MainActivity.this,ArrayAdapterActivity.class);  
  28.             MainActivity.this.startActivity(intent_array);  
  29.             break;  
  30.         case R.id.btnSimple:  
  31.             Intent intent_simple = new Intent(MainActivity.this,SimpleAdapterActivity.class);  
  32.             MainActivity.this.startActivity(intent_simple);  
  33.             break;  
  34.         case R.id.btnSimpleCursor:  
  35.             Intent intent_cursor = new Intent(MainActivity.this,SimpleCursorAdapterActivity.class);  
  36.             MainActivity.this.startActivity(intent_cursor);  
  37.             break;  
  38.         }  
  39.     }  

main.xml的布局:

   
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="ListView使用示例" 
  11.     android:gravity="center" 
  12.     android:textColor="#EEE" 
  13.     android:textStyle="bold" 
  14.     android:textSize="25sp" 
  15.     /> 
  16. <Button 
  17.     android:id="@+id/btnArray" 
  18.     android:layout_width="wrap_content"   
  19.     android:layout_height="wrap_content"   
  20.     android:text="show ArrayAdapter" 
  21.     /> 
  22. <Button 
  23.     android:id="@+id/btnSimple" 
  24.     android:layout_width="wrap_content"   
  25.     android:layout_height="wrap_content"   
  26.     android:text="show SimpleAdapter" 
  27.     /> 
  28. <Button 
  29.     android:id="@+id/btnSimpleCursor" 
  30.     android:layout_width="wrap_content"   
  31.     android:layout_height="wrap_content"   
  32.     android:text="show SimpleCursorAdapter" 
  33.     /> 
  34. LinearLayout> 

主界面有三个Button,每一个Button对应相应的数据源,显示出ListActivity。

主界面截图:

接着,编写三个不同数据源的Activity

第一种:ArrayAdapter

ArrayAdapter是三种数据源中最简单的Adapter,只能显示一行文字

ArrayAdapter.java的代码如下:

   
  1. public class ArrayAdapterActivity extends ListActivity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         //列表项的数据  
  6.         String[] strs = {"1","2","3","4","5"};  
  7.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strs);  
  8.         setListAdapter(adapter);  
  9.     }  

运行结果:

第二种:SimpleAdapterActivity

SimpleAdapterActivity需要自定义每一项显示的布局方式:

所以simple.xml的代码如下:

   
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <ImageView 
  8.     android:id="@+id/img" 
  9.     android:layout_width="wrap_content" 
  10.     android:layout_height="wrap_content" 
  11.     android:layout_margin="5dp" 
  12.     /> 
  13. <TextView 
  14.     android:id="@+id/title" 
  15.     android:layout_width="wrap_content"   
  16.     android:layout_height="wrap_content"   
  17.     android:textColor="#ffffff" 
  18.     android:textSize="20sp" 
  19.     /> 
  20. LinearLayout> 

SimpleAdapterActivity.java代码如下:

   
  1. public class SimpleAdapterActivity extends ListActivity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.           
  6.         SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.simple, new String[] { "title",  "img" }, new int[] { R.id.title, R.id.img });  
  7.         setListAdapter(adapter);  
  8.     }  
  9.       
  10.     private List<Map<String, Object>> getData() {  
  11.         //map.put(参数名字,参数值)  
  12.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  13.         Map<String, Object> map = new HashMap<String, Object>();  
  14.         map.put("title", "摩托罗拉");  
  15.         map.put("img", R.drawable.icon);  
  16.         list.add(map);  
  17.           
  18.         map = new HashMap<String, Object>();  
  19.         map.put("title", "诺基亚");  
  20.         map.put("img", R.drawable.icon);  
  21.         list.add(map);  
  22.           
  23.         map = new HashMap<String, Object>();  
  24.         map.put("title", "三星");  
  25.         map.put("img", R.drawable.icon);  
  26.         list.add(map);  
  27.         return list;  
  28.         }    

运行结果如下:

第三种:SimpleCursorAdapterActivity

SimpleCursorAdapterActivity是依赖于数据库的一种数据源,这里为了方便我就不重新建一个数据库,然后插入数据了,我就用读取联系人姓名的方式为例和大家做一个简单的介绍。

SimpleCursorAdapterActivity.xml代码如下:

   
  1. public class SimpleCursorAdapterActivity extends ListActivity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         //获得一个指向系统通讯录数据库的Cursor对象获得数据来源  
  6.         Cursor cur = getContentResolver().query(People.CONTENT_URI, null, null, null, null);  
  7.         startManagingCursor(cur);  
  8.         //实例化列表适配器  
  9.           
  10.         ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cur, new String[] {People.NAME}, new int[] {android.R.id.text1});  
  11.         setListAdapter(adapter);  
  12.     }  

这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限

运行结果如下图:

更多相关文章

  1. Android单元测试 - 如何开始?
  2. Android(安卓)Toolchain与Bionic Libc
  3. Android(安卓)混合了 JSON 的 Android(安卓)应用程序
  4. Android(安卓)源代码编后的目录分析
  5. Android(安卓)CountDownTimer实现定时器和倒计时效果
  6. android的九宫格式实现
  7. Android(安卓)Http请求的代码
  8. Android常用三栏式滑动/滚动视图(View)的设计与实现代码
  9. Android实现TextView部分文本监听单击事件

随机推荐

  1. Android之Handler用法总结
  2. 1.2 Android(安卓)开发环境搭建
  3. 我对android的第一印象
  4. Android模仿Buttonbar(style="@android:st
  5. 一个简单的Android圆形ProgressBar
  6. Selector的一些state使用
  7. Android(安卓)保存文件路径
  8. Android(安卓)C 语言读取系统属性
  9. android 系统级 bug audio latency
  10. Android(安卓)jni系统变量、函数、接口定