Android 针对继承BaseAdapter的自定义适配器应注意的几个地方-阿里云开发者社区

开发者社区> 余二五> 正文

Android 针对继承BaseAdapter的自定义适配器应注意的几个地方

简介:
+关注继续查看

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

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

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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中去,理解不了,可以看下图:

wKioL1OC-J7x3_LlAAESkvIL9xA589.jpg

这是一个activity的layout布局。

wKioL1OC-J_TtYIuAACW4bJSFj0215.jpg

这是一个Item的layout布局。

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

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

1
2
3
4
@Overridepublic View getView(int position, View convertView, ViewGroup parent) { 
    //这里就是给获取组件,进行一些赋值操作或者添加事件 
    return convertView;
}

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










本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1417226,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
安卓开发_浅谈ListView(ArrayAdapter数组适配器)
列表视图(ListView)以垂直的形式列出需要显示的列表项。   实现过程:新建适配器->添加数据源到适配器->视图加载适配器   在安卓中,有两种方法可以在屏幕中添加列表视图 1、直接用ListView组件创建 2、让Activity继承ListActivity实现   一、xm...
846 0
JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的显示! 为什么要使用EL表达式? 为什么要使用EL表达式,我们先来看一下没有EL表达式是怎么样读取对象数据的吧! 在1.
1146 0
Adapter(适配器)模式
1. 概述:          接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。         例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器。
799 0
QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】
  最新下载地址: 自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新)     QuickControl web控件集包含的控件 QuickControl web控件集——基本控件: 控件名称 说明 详细介绍 MyTextBox ...
960 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载