1. public View getView(int position, View convertView, ViewGroup parent) {  
  2.     System.out.println("getView::" + position);  
  3.     int type = TYPE_SEND;  
  4.     try  
  5.     {  
  6.         type = Integer.parseInt(data.get(position).get("type"));  
  7.     } catch (Exception e)  
  8.     {  
  9.         e.printStackTrace();  
  10.     }  
  11.     ViewHolder holder = null;  
  12.     if (convertView == null)  
  13.     {  
  14.         System.out.println("getView::convertView is null");  
  15.         holder = new ViewHolder();  
  16.         switch (type)  
  17.         {  
  18.         case TYPE_SEND:  
  19.             convertView = View.inflate(getBaseContext(),  
  20.                     R.layout.listitem_send, null);  
  21.             holder.text = (TextView) convertView  
  22.                     .findViewById(R.id.message);  
  23.             break;  
  24.         case TYPE_RECEIVE:  
  25.             convertView = View.inflate(getBaseContext(),  
  26.                     R.layout.listitem_receive, null);  
  27.             holder.text = (TextView) convertView  
  28.                     .findViewById(R.id.message);  
  29.             break;  
  30.         case TYPE_PIC:  
  31.             convertView = new ImageView(getBaseContext());  
  32.             ((ImageView) convertView).setImageResource(R.drawable.icon);  
  33.             break;  
  34.         }  
  35.         convertView.setTag(holder);  
  36.     }  
  37.     else  
  38.     {  
  39.         System.out.println("getView::convertView not null");  
  40.         holder = (ViewHolder) convertView.getTag();  
  41.     }  
  42.       
  43.     if (type != TYPE_PIC)  
  44.     {  
  45.         String msg = data.get(position).get("content");  
  46.         holder.text.setText(msg);  
  47.     }  
  48.     return convertView;  
  49. }  

备注:无论使用几种布局,都必须放在一个holder里,不允许中心new Holder