ListView 行後に異なるレイアウトを

Android ListView で、行毎に異なるレイアウトで表示させたい場合、
android.widget.BaseAdapter を使うのが良いみたい。
android.view.LayoutInflater を具象化する BaseAdpter に渡して getView メソッドで返す
android.view.View を、行毎に LayoutInflater から如何に生成するかになる。

偶数行、奇数行で異なるようにする例は、以下のようにする。
  (こんなことする機会は少ないと思うが。。)

final LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ListView listview = (ListView)findViewById(R.id.listView);

listview.setAdapter(new BaseAdapter(){
   @Override
   public View getView(int position,View view,ViewGroup parent){

      if (view==null>){
         View newview;
         if ((position % 2)==0){
            newview = layoutInflater.inflate(android.R.layout.simple_list_item_2,null);
            TextView tv1 = (TextView)newview.findViewById(android.R.id.text1);
            TextView tv2 = (TextView)newview.findViewById(android.R.id.text2);
               :
            // TextView  tv1 と tv2 をセット

         }else{
            newview = layoutInflater.inflate(android.R.layout.simple_list_item_1,null);
            TextView tv1 = (TextView)newview.findViewById(android.R.id.text1);
               :
            // TextView  tv1 だけ を セット

         }
         return newview;
      }
      return view;
   }
   @Override
   public long getItemId(int position){
      return position;
   }
   @Override
   public Object getItem(int position){
      return mlist.get(position);
   }
   @Override
   public int getCount(){

      return 10; // 表示するリストのサイズを返す!
   }
});