android ListView自定义适配器实现

android 自定义适配器

自定义适配器实现步骤
一,继承BaseAdapter
二,添加数据集合和反射器实现构造器和setter方法
三,实现getCount,getItem,getItemId方法
四,实现getView方法

一,继承BaseAdapter

首先我们创建一个java class ,习惯命名为MyAdapter,让他继承BaseAdapter,并重写他的方法

public class MainAdapter extends BaseAdapter {
    @Override
    public int getCount() {//获得ListView总行数
        return 0;
    }

    @Override
    public Object getItem(int position) {//获得项的对象
        return null;
    }

    @Override
    public long getItemId(int position) {//获得项的id
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return null;
    }
}

二,添加数据集合和反射器实现构造器和setter方法

添加数据集合和反射器,反射器的作用是将一个layout布局反射为对象。

    List<Map<String,Object>> list;//添加数据集合
    LayoutInflater inflater ;//添加反射器

在构造器中实例化反射器inflater

    public MainAdapter(Context context) {
        inflater = LayoutInflater.from(context);
    }

实现list的setter方法

    public void setList(List<Map<String, Object>> list) {
        this.list = list;
    }

三,实现getCount,getItem,getItemId方法

大家可以根据注释理解,为什么这样实现

    @Override
    public int getCount() {//获得ListView总行数
        return list.size();
    }

    @Override
    public Object getItem(int position) {//获得项的对象
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {//获得项的id
        return position;
    }

四,实现getView方法

最后一步也就是最关键的一步了,实现getView方法,这里也就要用到我们之前的反射器,将行布局item转化为对象使用

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = inflater.inflate(R.layout.item,null);//反射行布局
        ImageView logo = (ImageView) view.findViewById(R.id.logo);//获得各控件
        TextView textView = (TextView) view.findViewById(R.id.tv_main);

        logo.setImageResource((Integer) list.get(position).get("logo"));给控件赋值
        textView.setText((String) list.get(position).get("name"));
        return view;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maybe_ch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值