android中Baseadapter的 getItem 和 getItemId 的作用和重写

重写Baseadapter时,我们知道需要重写以下四个方法:getCount,getItem(int position),getItemId(int position),getView方法,

getCount决定了listview一共有多少个item,而getView返回了每个item项所显示的view。

可是getItem(int position),getItemId(int position)有什么作用呢?该怎么重写呢?

首先看 getItem:

@Override

public Object getItem(int position) {

.        ...

}

官方解释是Get
the data item associated with the specified position in the data set.即获得相应数据集合中特定位置的数据项。那么该方法是在哪里被调用呢?什么时候被调用呢?

通过查看源代码发现,getItem方法不是在Baseadapter类中被调用的,而是在Adapterview中被调用的。

adapterView类中,我们找到了如下方法,

public Object getItemAtPosition(int position) {
      T adapter = getAdapter();
      return (adapter == null || position < 0) ? null : adapter.getItem(position);
  }

那么getItemAtPosition(position) 又是什么时候被调用?答案:它也不会被自动调用,它是用来在我们设置

setOnItemClickListener、setOnItemLongClickListener、setOnItemSelectedListener的点击选择处理事件中方便地调用

来获取当前行数据的。官方解释Impelmenters can call getItemAtPosition(position) if they need to access the data

associated with the selected item.所以一般情况下,我们可以这样写:

@Override

public Object getItem(int position) {

return this.datalist.get(position);

}

当然如果你喜欢,也可以在里面直接返回null.

至于getItemId(int position),它返回的是该postion对应item的id,adapterview也有类似方法:

public long getItemIdAtPosition(int position) {
      T adapter = getAdapter();
      return (adapter == null || position < 0) ? INVALID_ROW_ID : adapter.getItemId(position);
  }

不同getItem的是,某些方法(如onclicklistener的onclick方法)有id这个参数,而这个id参数就是取决于getItemId()这个返回值的。

我们一般可以这样实现:

            @Override
            public long getItemId(int position) {
                return position;
            }

android中Baseadapter的 getItem 和 getItemId 的作用和重写,布布扣,bubuko.com

时间: 2024-11-03 21:07:40

android中Baseadapter的 getItem 和 getItemId 的作用和重写的相关文章

Android中BaseAdapter使用基础点

Android中要填充一些控件(如ListView)经常须要用到Adapter来实现,经常使用的有ArrayAdapter,SimpleAdapter, CursorAdapter,BaseAdapter,前几个都是继承自BaseAdapter的. 我平时经常使用的就是ArrayAdapter,再就是 BaseAdapter了,SimpleAdapter本身事实上也不算简单.所以能用SimpleAdapter的时候我一般都用了BaseAdapter. 至于CuesorAdapter我就差点儿没用

Android中scrollview的scrollto方法不起作用的办法

有时候,我们在onCreate函数中调用ScrollBy函数.ScrollTo函数,会出现无效果的情况 public class ShowTraffic extends Activity ScrollView mScrollView = null; @Override    protected void onCreate(Bundle savedInstanceState)    {       super.onCreate(savedInstanceState); setContentView

JAVA、android中常用的一些jar包的作用

正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来

Android中Adapter之BaseAdapter使用

Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法. Android中Adapter类其实就是把数据源绑定到指定的View上,然后再返回该View,而返回来的这个View就是ListView中的某一 行item.这里返回来的View正是由我们的Adapter中的getView方法返回的.这样就会容易理解数据是怎样一条一条显示在ListView 中的. 在完成这篇文章中的例子之后,我思考了很长时间

Android中的软件Watchdog

由于Android的SystemServer内有一票重要Service,所以在进程内有一个软件实现的Watchdog机制,用于监视SystemServer中各Service是否正常工作.如果超过一定时间(默认30秒),就dump现场便于分析,再超时(默认60秒)就重启SystemServer保证系统可用性.同时logcat中会打印类似下面信息: W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.andr

Android中apk动态加载技术研究(1)基础知识研修

java classloader 和android中DexClassloader对比: Java ClassLoader : 作用: 主要用来加载class 到jvm中,以供程序使用,也就是说:java程序可以动态加载类定义,而这个动态加载机制就是通过ClassLoader来实现的 核心loader: A:: bootstrap classloader(启动类加载器) -->加载java核心api,包括用户自定义的classloader和另外两个loader B: ExtClassLoader

Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器

一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适配器. 二.深入了解: 1.什么是适配器? 适配器:在安卓中,顾名思义就是把数据变成符合界面风格的形式,并且通过ListView显示出来.也就是说适配器是数据和界面之间的桥梁. 适配器在数据库中的数据(后台)和显示页面(前端)中充当一个转换器的角色,数据库中的数据(如数组,链表,数据库,集合等)通过

Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)

Android中很多地方使用的是适配器(Adapter)机制,那我们就要好好把这个Adapter利用起来,并且用出自己的特色,来符合我们自行设计的需要喽~~~ 下面先上一个例子,是使用ViewHolder进行显示效率优化过的工程: package com.test.listviewsimpleadapter;    import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java

Android开发之ListView中BaseAdapter的使用

BaseAdapter,官网链接--http://developer.android.com/intl/zh-cn/reference/android/widget/BaseAdapter.html 继承:Object 接口:ListAdapter  SpinnerAdapter 已知直接子类: ArrayAdapter<T>, CursorAdapter, SimpleAdapter 已知间接子类: ResourceCursorAdapter, SimpleCursorAdapter 使用B