方法原型
public View getView(int position, View convertView, ViewGroup parent)
ListView控件中的viewitem数目只能刚好充满屏幕
再翻页的过程中它只是用旧的view显示新的数据
所以 convertView参数 有可能是null 有可能不是null
我的写法:
public View getView(int position, View v, ViewGroup parent) {
if(v==null){
v=lai.inflate(R.layout.block, null);
}
GridItem item=data.get(position);
ImageView iv= (ImageView) v.findViewById(R.id.ItemImage);
iv.setImageResource(item.img);
TextView tv=(TextView) v.findViewById(R.id.ItemText);
tv.setText(item.text);
v.setTag(item);
return v;
}
结论:viewitem 不是和 数据item 一一对应的
进一步研究请看
http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html
分享到:
相关推荐
今天在写一个GridView的BaseAdapter时发现,Adapter的getview方法在position为0的时候会连续调用好几次。 我们知道谷歌时是做过优化的,让view有个缓存,我怀疑是因为做缓存的原因才让position连续调用 log如图 可见...
在本测试中,我们主要关注`getView()`方法,它是BaseAdapter的核心,负责将数据转化为可显示的View。在实际应用中,`getView()`的性能优化和空判断处理是开发者常常面临的问题。 `getView()`方法有三个参数:...
- **BaseAdapter**:它是Adapter的基类,提供了一套基本的接口和方法,供开发者进行自定义扩展,满足特定需求。 2. **核心方法** - `getCount()`: 返回数据源中元素的数量,决定列表能展示多少项。 - `getItem...
3. 自定义`BaseAdapter`:重写`getView()`方法,根据数据模型创建或复用列表项视图,并在`WebView`中加载评分HTML。 4. 考虑性能:为了提高性能,可以使用`convertView`复用已创建的列表项视图,避免频繁创建新的`...
本篇文章将深入探讨BaseAdapter的工作原理、使用方法以及一些常见应用场景。 1. **BaseAdapter概述** BaseAdapter是Android SDK提供的一种抽象适配器类,它为自定义适配器提供了一个基础模板。开发者可以根据实际...
通过继承BaseAdapter并重写其必要的方法,我们可以根据需求定制自己的数据适配器。 2. **BaseAdapter的核心方法** - `getCount()`: 返回数据集的大小,表示列表中的项数。 - `getItem(int position)`: 根据位置...
本文将深入探讨BaseAdapter的优化方法以及三种实用的编写方式,使其可以直接作为工具类使用。 ### 一、BaseAdapter的性能问题 1. **视图复用不足**:在处理大量数据时,如果不进行视图复用,每次滚动都会创建新的...
1. **缓存convertView**: 在getView方法中,通过检查convertView是否为空,可以复用已经创建过的视图,避免频繁创建新的View对象,从而提高性能。 2. **ViewHolder模式**: 使用ViewHolder可以避免在列表滚动时频繁地...
BaseAdapter的核心方法包括:`getCount()`(返回数据集大小)、`getItem()`(获取指定位置的数据项)、`getItemId()`(返回数据项的唯一标识)以及`getView()`(创建并返回列表项视图)。 二、BaseAdapter的三种...
在创建自定义BaseAdapter时,你需要继承BaseAdapter并实现以上方法。首先,你需要创建一个包含数据的列表,可以是ArrayList或其他集合类型。然后,为每个列表项创建一个布局,并在`getView()`方法中设置相应的数据。...
**二、BaseAdapter的核心方法** 1. `int getCount()`: 返回数据集的大小,用于确定列表中的条目数量。 2. `Object getItem(int position)`: 根据位置返回数据集中的特定项。这个方法返回的数据对象通常是你需要显示...
在这个场景中,我们关注的是用BaseAdapter来实现ListView的方法。BaseAdapter是Android系统提供的一种基础适配器,它可以自定义数据到ListView项的映射过程,为开发者提供了极大的灵活性。 首先,理解BaseAdapter的...
下面我们将详细讲解BaseAdapter的使用方法及其核心知识点。 1. **BaseAdapter概述** BaseAdapter是一个抽象类,它是Adapter接口的一个实现,用于连接数据源和UI组件。它提供了一种将数据对象转换为ListView或...
本教程通过一个Eclipse下的Android工程实例,详细讲解了BaseAdapter的使用方法以及如何进行性能优化。下面我们将深入探讨BaseAdapter的核心概念、实现过程以及优化策略。 首先,我们来看BaseAdapter的基本结构。...
在ListView中,BaseAdapter是一个抽象类,你需要继承它并实现其中的方法,如`getView()`,来定制每个列表项的显示。`getView()`方法会在ListView滚动时被频繁调用,用于创建或复用ListView的子视图(ViewHolder)。 ...
4. `getView(int position, View convertView, ViewGroup parent)`: 这是`BaseAdapter`的核心方法,负责创建或复用ListView的每个列表项视图。`convertView`是可重用的视图,如果可用,可以减少内存分配和提高性能。...
在未封装的情况下,我们通常需要实现BaseAdapter的以下方法: 1. `getCount()`: 返回数据集的大小。 2. `getItem(int position)`: 获取指定位置的数据项。 3. `getItemId(int position)`: 返回数据项的唯一ID,通常...
`BaseAdapter`主要包含了四个抽象方法,这些方法是必须被重写的: 1. **`getCount()`**:返回数据项的数量。 2. **`getItem(int position)`**:返回指定位置的数据项。 3. **`getItemId(int position)`**:返回指定...
封装BaseAdapter时,我们需要创建一个继承自BaseAdapter的自定义Adapter,并实现以上方法。具体步骤如下: 1. 创建数据模型类(Model),用于存储ListView每一项的数据。 2. 在Adapter中创建数据列表,用来存放...