通常我们写一个继承BaseAdapter的自定义适配器的时候,主要想做的大概有两件事:

1、在适配的组件里(如ListView,GridView)定义自己想要的布局(Layout)。

2、为布局里的组件(如Button)添加触发响应的事件(如Click)。

当我们写自定义Adapter的时候需要override以下几个方法

@Overridepublic int getCount() {

return 0;

}

@Overridepublic Object getItem(int position) {

return null;

}

@Overridepublic long getItemId(int position) {

return 0;

}

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {

return null;

}

这里我们需要了解getView方法不是在页面生成的时候只被调用一次,而是根据你当前页面能显示的List里的条目数,被调用数次。什么意思呢?说白了,我们生成的这个自定义的页面(通常是放在ListView里的)看起来好像是一个整体,实际上是由许多个convertView拼装成的,每个convertView就相当于一个Item,然后这些Item被塞到ListView中去,理解不了,可以看下图:

这是一个activity的layout布局。

这是一个Item的layout布局。

convertView里我们就可以随意的加些小组件,比如按钮啊,然后为按钮添加一些事件什么的。

getView里的具体实现我就不缀述了,我想强调的是返回值,一定要return最新生成的convertView,否则功亏一篑。这里我栽过小2次。正确的就是这样:

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {

//这里就是给获取组件,进行一些赋值操作或者添加事件

return convertView;

}

然后,这里还有另外一个坑,就是getCount方法。默认情况下就如同上面写的一样,看似好像可以不用管它,直接return 0;就好,不过经过我这个试坑专员的验证,不管它是绝对不行的。当我们用 listview去setAdapter的时候,程序先走的是你自定义Adapter的构造函数,然后就会走getCount方法,之后才会进入getView方法,如果getCount返回0了,那么后面的事情就不用多想了,不会调用。这个坑我记得是把我整的挺惨,希望大家别掉下去。

android组件不能加适配器,Android 针对继承BaseAdapter的自定义适配器应注意的几个地方...相关推荐

  1. android listview 列加id,Android实战开发之ListView同一个item显示2列的实现方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Android实战开发中,ListView控件用途十分广泛,各种自定义控件多种多样.当项目要求实现一个2列的商品列表形式的界面,我们首先肯定想到用List ...

  2. android 字体选中加粗,Android——TabLayout设置选中字体变大,加粗,透明度

    TabLayout自带没有设置选中时字体大小的属性,网上搜了好多基本都不生效,搞了一上午终于好使了,记个笔记记录下,布局要自己定义下,要不不好使. 布局中使用TabLayout的xml文件 andro ...

  3. android dagger2 懒加载,Android Dagger依赖注入框架浅析

    今天接触了Dagger这套android的依赖注入框架(DI框架),感觉跟Spring 的IOC差不多吧.这个框架它的好处是它没有采用反射技术(Spring是用反射的),而是用预编译技术,因为基于反射 ...

  4. android 切换摄像头加动画,android前后摄像头切换

    android前后摄像头切换demo,startview后的页面上有切换.拍照两个按钮,拍照后照片未保存,需要保存的请看下方注释,实现了拍照.聚焦功能,以下是CameraPreview.java源码: ...

  5. android组件化架构 书,Android MVVM组件化架构方案

    MVVMHabitComponent 关于Android的组件化,相信大家并不陌生,网上谈论组件化的文章,多如过江之鲫,然而一篇基于MVVM模式的组件化方案却很少.结合自身的调研和探索,在此分享一篇基 ...

  6. gif android 点击 加载,android 加载显示gif图片的解决方案

    使用方法: 1-把GifView.jar加入你的项目. 2-在xml中配置GifView的基本属性,GifView继承自View类,和Button.ImageView一样是一个UI控件.如: andr ...

  7. android 组件导出,阳光沙滩-android组件化项目,build生成的文件重复的情况

    1.最近弄一个组件化的项目练手.项目第一次run可以跑起来,等我杀死stop项目后,过一段时间在再次run想跑项目,就会报如下错误 这个component_base_back 3.xml文件是第二次r ...

  8. android 模块自动加载,Android 之ko模块的自动加载

    最近在做一个触摸式遥控器,以控制Android TV,供应商提供了触摸板驱动的source code,我将其编译生成一个适合我们平台的ko模块.但是有个问题,每次用时,必须手动insmod进去,很麻烦 ...

  9. Android新浪微博分页加载,Android仿新浪微博自定义ListView下拉刷新(4)

    自定义PullToRefreshListView继承ListView,在ListView头部添加一个下拉的头部布局.跟ListView用法完全一致. 此处详细介绍Adapter的详细代码. 1.首先给 ...

  10. android地图图片加载,Android图片加载解析之Bitmap

    写在前面的话,本篇文章是参考自<Android开发艺术探索>所写,看此书已是2015年的事情啦,由于独立开放项目,以至于对于Android原理性东西生疏,最近需要换工作,重新捡起此书,仍有 ...

最新文章

  1. R删除冗余行数据基于dplyr包
  2. 左牵Uber右联大众,黄教主带领320家车企一统自动驾驶江湖
  3. 行为模式之Chain of Responsibility模式
  4. head.s 剖析——Linux-0.11 剖析笔记(五)
  5. sourceTree初识
  6. Linux学习笔记---使用MfgTool工具烧写官方系统(一)
  7. 单链表实现集合的交并差Java_单链表表示的集合交,并,差运算,设计采用定义集合,用集合运算表达式求值的方式进行。C语言实现。...
  8. 解决js动态改变dom元素属性后页面及时渲染问题
  9. 匹配网页里的zip_ZIP 也能边下载边解压?流式解压技术揭秘
  10. access的papersize命令_如何在报表中使用自定义尺寸的纸张
  11. 计算机等级考试c语言 真题,计算机等级考试二级C语言真题
  12. linux怎么从超级用户切换,linux怎么切换到超级用户
  13. 雅马哈机器人左手右手系统_YAMAHA机械手操作手册.PDF
  14. 工业企业外购材料进项税额的会计处理
  15. 2022年,你还要做开源软件么?
  16. python什么是高阶函数_对于高阶函数的理解是什么?
  17. springcloud入门——config分布式配置中心
  18. 腾讯视频网页版无法连接服务器失败怎么办,腾讯视频突然不能投屏怎么解决 腾讯视频突然不能投屏解决方法...
  19. 如何判断一个APP页面是原生的还是H5页面
  20. 《响应式Web设计实践》一2.1 布局选项

热门文章

  1. Hibernate 基本类型
  2. wordpress让百度分享支持https
  3. 局域网邮件服务器搭建地址薄更新,搭建局域网邮件服务器
  4. php 上传图片转base64格式,PHP实现本地图片转base64格式并上传
  5. 看书学python靠谱吗_自学Python靠谱吗?
  6. Django(二):安装django、创建项目及目录结构说明、在pycharm中搭建
  7. BNU 背包密码(编码与解密)
  8. c++课程设计(水)
  9. java输出日期_java输出日期时间
  10. 如何找出当前占用磁盘io 最多的进程 - linux,如何找出当前占用磁盘IO最多的进程...