自定义适配器

案例一 图文混排:

第一步:定义使用到的组件
  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值