之前写的绑定数据是只是简单的绑定了字符串,这次我们将一次绑定多条数据并且尝试用自定义的布局。在这篇文章中首先讲解的是用Hashmap 去绑定数据,第二个例子,讲解自定义布局然后绑定数据,好的,大家先看第一个例子显示:

 

ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定数据(一)_第1张图片

这个界面相信大家都看到过的,这次比上一个例子多的是ListView 的每一项绑定的是不再是单纯的一个字符串了,ListView 的每一个条目我们需要显示两个信息,编号和姓名.可以看到,我们绑定了十条数据,用了一个for 循环,每一条绑定的时候创建一个HashMap,然后往里面放数据,放的数据有相对应的key, idname,到时候我们取数据的时候就根据这个key 找到我们放进去的数据,有点类似与键值对的意思,不知道这样解释大家明白不明白。

贴上源代码,然后接下来讲解:

 

   
   
   
   
  1. /** 
  2.  *  
  3.  */ 
  4. package com.cz.list.demo; 
  5.  
  6. import java.util.ArrayList; 
  7. import java.util.HashMap; 
  8.  
  9. import android.app.Activity; 
  10. import android.os.Bundle; 
  11. import android.widget.ListView; 
  12. import android.widget.SimpleAdapter; 
  13.  
  14. /** 
  15.  * @author CZ 
  16.  *  
  17.  */ 
  18. public class SimpleAdapterListDemo extends Activity { 
  19.     private ListView listView; 
  20.  
  21.     /* 
  22.      * (non-Javadoc) 
  23.      *  
  24.      * @see android.app.Activity#onCreate(android.os.Bundle) 
  25.      */ 
  26.     @Override 
  27.     protected void onCreate(Bundle savedInstanceState) { 
  28.         // TODO Auto-generated method stub 
  29.         super.onCreate(savedInstanceState); 
  30.         setContentView(R.layout.array_list_layout); 
  31.         listView = (ListView) findViewById(R.id.array_list); 
  32.  
  33.         SimpleAdapter simpleAdapter = new SimpleAdapter( 
  34.                 SimpleAdapterListDemo.this, getHashMapData(), 
  35.                 android.R.layout.simple_list_item_2, new String[] { "id", 
  36.                         "name" }, new int[] { android.R.id.text1, 
  37.                         android.R.id.text2 }); 
  38.         listView.setAdapter(simpleAdapter); 
  39.     } 
  40.  
  41.     /** 
  42.      *  
  43.      * @return Year:2011 Date:2011-10-23 Time:下午05:45:38 Author:CZ TODO 
  44.      *         写一个方法去绑定十条数据 
  45.      */ 
  46.     private ArrayList<HashMap<String, Object>> getHashMapData() { 
  47.         ArrayList<HashMap<String, Object>> hashData = new ArrayList<HashMap<String, Object>>(); 
  48.         for (int i = 0; i < 10; i++) { 
  49.             HashMap<String, Object> mItem = new HashMap<String, Object>(); 
  50.             mItem.put("id", "当前的id是" + i); 
  51.             mItem.put("name", "名字是美女" + i); 
  52.             hashData.add(mItem); 
  53.         } 
  54.         return hashData; 
  55.  
  56.     } 

 这个Adapter直接用的是SimpleAdapter,构造函数中有五个参数,可以看下:

android.widget.SimpleAdapter.SimpleAdapter(Context context, ListMap<String, ?>> data, int resource, String[] from, int[] to)

 构造函数中有五个参数,

第一个是context引用对象,

第二个参数就是我们要显示的数据集List,

第三个参数是int 类型的,是我们每一条的自定义布局,程序中我们用到的是android中自带的布局,所以用android.R.layout.list_item_2来引用,如果是我们自定义的布局,就直接用R.layout.XX引用就好。

第四个参数跟第五个参数需要一起理解,从字面的意思理解,from to 就是把第四个参数里面的数据显示到第五个参数中。 第二个参数是我们要显示的数据集,每条数据都是用哈希Map 来定义的,里面有定义的作为key 的字段,id,name, 有这样一个映射的关系,第四个参数中的key 值映射到第五个参数中相对应的TextView 上面,那么这些TextView 是从哪里来的,是第三个参数中 布局文件中的TextView,这四个参数中可以这样理解.

 

ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定数据(一)_第2张图片

希望大家这时候可以理解。

接下来是自定义布局的例子,但是因为我第一次写完提交的时候提示字符超过8万,粘有贴错了东西,让我不禁在心里发下牢骚,编辑器有待提高啊..

未完下篇继续....