一、自定义适配器一般继承自BaseAdaper这个类,继承此类需要继承四个抽象方法
public class Myadapter extends BaseAdapter {
private Context context;private List<Map<String, Object>> listItems;
private LayoutInflater listContainer;
public final class ListItemView{
public ImageView image;
public TextView title;
public ImageView imagebar;
public TextView time;
}
//自定义的适配器一个方法便于获得当前适配器对象的参数,和需要映射的数据队列
// TODO Auto-generated constructor stub
this.context=context;
listContainer=LayoutInflater.from(context);
this.listItems=listItems;
}
@Override
//获得项目的数量
// TODO Auto-generated method stub
return listItems.size();
}
@Override
//获得position位置时候相应项目对象
// TODO Auto-generated method stub
System.out.println("getItem");
return listItems.get(position);
}
@Override
//取得position位置的项目的ID,默认的ID就是position
// TODO Auto-generated method stub
System.out.println("getItemId");
return position;
}
@Override
//这个是最重要的一个方法,返回一个视图对象
// TODO Auto-generated method stub
ListItemView listItemView=null;
if(convertView==null){
listItemView=new ListItemView();
//获取list_item布局文件的视图
convertView=listContainer.inflate(R.layout.list_item, null);
//获取控件对象
listItemView.image=(ImageView)convertView.findViewById(R.id.listimage01);
listItemView.title=(TextView)convertView.findViewById(R.id.listid);
listItemView.imagebar=(ImageView)convertView.findViewById(R.id.listimage02);
listItemView.time=(TextView)convertView.findViewById(R.id.listtime);
//设置控件集到converView
convertView.setTag(listItemView);
}else{
listItemView=(ListItemView)convertView.getTag();
}
System.out.println("return convertView");
//lisItemView 指的是
//listItemView.image.setBackgroundResource((Integer)listItems.get(position).get("image"));
listItemView.image.setBackgroundResource((Integer)listItems.get(position).get("image"));
listItemView.title.setText((String)listItems.get(position).get("id"));
listItemView.imagebar.setBackgroundResource((Integer)listItems.get(position).get("bar"));
listItemView.time.setText((String)listItems.get(position).get("time"));
return convertView;
}
}
二、主界面的activity
public class MyAdatertest extends Activity {
private Myadapter myAdapter;
private ListView listview;
private String[] goodNames={"蛋糕","礼物","苹果","香蕉","邮票","爱心","天堂","疯狂","小牛","音乐"};
private Integer[] imageIDs={R.drawable.com_1,R.drawable.com_2,R.drawable.com_10,R.drawable.com_3,
R.drawable.com_4,R.drawable.com_5,R.drawable.com_6,R.drawable.com_7,R.drawable.com_8
,R.drawable.com_9};
private Integer[] bar={R.drawable.ot_star_0,R.drawable.ot_star_5,R.drawable.ot_star_4d5,R.drawable.ot_star_4,
R.drawable.ot_star_3d5,R.drawable.ot_star_3,R.drawable.ot_star_2d5,R.drawable .ot_star_2,R.drawable.ot_star_2,
R.drawable.ot_star_1d5,R.drawable.ot_star_1,R.drawable.ot_star_0d5};
//private Double[] m={(double) (2011/03/04),(double)(2012/03/06),double(2012/01/12),(double)(2011/23/05),(double)(2001/06/07),(double)(2088/09/09)};
//
private String [] st={"2011/03/04","2011/03/05","2011/03/04","2011/03/06",
"2011/03/11","2011/03/10","2011/03/09","2011/03/08","2011/03/24","2011/03/07"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
/* Map<Integer, Object> smap=new HashMap<Integer, Object>();
for(int i=0;i<s.length;i++){
smap.put(0, v)
}*/
List<Map<String, Object>> listmap=new ArrayList<Map<String,Object>>();
for(int i=0;i<goodNames.length;i++){
Map<String, Object> map=new HashMap<String, Object>();
map.put("image", imageIDs[i]);
map.put("id", goodNames[i]);
map.put("bar", bar[i]);
map.put("time", st[i]);
listmap.add(map);
System.out.println(imageIDs[i]);}
listview=(ListView)findViewById(R.id.listme);
myAdapter=new Myadapter(this, listmap);
listvie参考w.setAdapter(myAdapter);
}
}
附上图片以供参考:
项目源代码 :http://download.csdn.net/detail/wd916913/4058561