前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android ListView自定义适配器实现

android ListView自定义适配器实现

作者头像
MaybeHC
发布2024-04-23 18:04:19
570
发布2024-04-23 18:04:19
举报
文章被收录于专栏:技术之路技术之路

android 自定义适配器

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

一,继承BaseAdapter

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

代码语言:javascript
复制
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布局反射为对象。

代码语言:javascript
复制
    List<Map<String,Object>> list;//添加数据集合
    LayoutInflater inflater ;//添加反射器

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

代码语言:javascript
复制
    public MainAdapter(Context context) {
        inflater = LayoutInflater.from(context);
    }

实现list的setter方法

代码语言:javascript
复制
    public void setList(List<Map<String, Object>> list) {
        this.list = list;
    }
三,实现getCount,getItem,getItemId方法

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

代码语言:javascript
复制
    @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转化为对象使用

代码语言:javascript
复制
    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;
    }
代码语言:javascript
复制
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • android 自定义适配器
    • 一,继承BaseAdapter
      • 二,添加数据集合和反射器实现构造器和setter方法
        • 三,实现getCount,getItem,getItemId方法
          • 四,实现getView方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com