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; // 表示するリストのサイズを返す!
}
});