自定义适配器

来源:互联网 发布:excel剔除某些数据求和 编辑:程序博客网 时间:2024/06/06 07:30
案例一 图文混排:

第一步:定义使用到的组件
  ListView listview=null;

第二步:书写一个方法,在方法中完成数据的加工
public void initdata(){
    List<Map<String,Object>> data=new ArrayList<Map<String,Object>();
    for(int i=1;i<=10;i++){
      Map<String,Object> map=new HashMap<String,Object>();
      map.put("image", R.drawable.ic_launcher);
      map.put("content", "光头强又看书了");
      data.add(map);    
    }
}

第三步: 自定义适配器
1>定义一个静态内部类,定义布局中的各种组件
static class ViewHolder{
    public ImageView image;//在自定义布局文件中也要做哦
    public TextView content;
}
2>自定义适配器
public class MyAdapter extends BaseAdapter{
    //加载布局文件
    private LayoutInflater layoutInflater;
    public MyAdapter(Context context){
       layoutInflater=(layoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
    }
    //在继承BaseAdapter类必须实现四个方法
    //获得数据总大小
    public int getCount() {
       return data.size();
    }
    //获得位置
    public Object getItem(int position) {
       return position;
    }
    //获得位置的编号
    public long getItemId(int position) {
       return position;
    }
    //
    public View getView(int position, View convertView, ViewGroup parent) {
       ViewHolder holder =null;
       if(convertView==null){
       //加载布局文件
         convertView=layoutInflater.inflate(R.layout.item, null);
         hodler=new ViewHolder();
         //将获得的控件对象放到hodler中
         hodler.image=(ImageView) convertView.findViewById(R.id.image);
         hodler.image=(TextView) convertView.findViewById(R.id.content);
         //做个tag标记
         convertView.setTag(holder);
       }else{
         hodler=(ViewHolder) converView.getTag();       
       }
       //将数据绑定到控件中
       holder.image.setBackgroundResource((Integer)data.get(position).get("image"));
       holder.content.setText(data.get(postion).get("content").toString());
       return convertView;
}

第四步:在主UI中添加适配器
listview .setAdapter(new MyAdapter());
0 0