自定义适配器小结

来源:互联网 发布:jquery 清空对象数据 编辑:程序博客网 时间:2024/05/16 19:37

一、自定义适配器一般继承自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;

    }   

//自定义的适配器一个方法便于获得当前适配器对象的参数,和需要映射的数据队列

    public Myadapter(Context context,List<Map<String , Object>>listItems) {
        // TODO Auto-generated constructor stub
        this.context=context;
        listContainer=LayoutInflater.from(context);
        this.listItems=listItems;
        
    }

    @Override

//获得项目的数量

    public int getCount() {
        // TODO Auto-generated method stub
        return listItems.size();
    }
    

    @Override

//获得position位置时候相应项目对象

    public Object getItem(int position) {
        // TODO Auto-generated method stub
        System.out.println("getItem");
        return   listItems.get(position);
    }

    @Override

//取得position位置的项目的ID,默认的ID就是position

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        System.out.println("getItemId");
        return position;
    }

    @Override

//这个是最重要的一个方法,返回一个视图对象

    public View getView(int position, View convertView, ViewGroup parent) {
        // 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