自定义适配器视图getview实现方法比较

  Android开发之中,listview是一个非常重要的组件,它以列表的形式显示用户的数据,用户可以自由的定义LsitView每一列的内容,样式,很多时候使用ListView都需要使用自定义Adapter,自定义Adapter之中最重要的莫过于getView方法了。

  getView方法实现主要的三种方法:

  1、第一种就是每次都给adapter new一个View载入布局。

    例如:

public View getView(int position, View convertView, ViewGroup parent) {
 View item = mInflater.inflate(R.layout.list_item_icon_text, null);
 ((TextView) item.findViewById(R.id.text)).setText(DATA[position]);
 ((ImageView) item.findViewById(R.id.icon)).setImageBitmap(
 (position & 1) == 1 ? mIcon1 : mIcon2);
 return item;
}

  使用这种方式会占据大量内存,十分影响性能(不建议使用)

  2、当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据。

public View getView(int position, View convertView, ViewGroup parent) {
 if (convertView == null) {
 convertView = mInflater.inflate(R.layout.item, parent, false);
 }
 ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
 ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
 (position & 1) == 1 ? mIcon1 : mIcon2);
 return convertView;
 }

  这种方式每次都要判断view回收池之中是否有可用的view,如果有则重用;如果没有则,新建View。(可以使用)

  3、最快的一种方式:定义一个ViewHolder,将convetView的tag设置为ViewHolder,不为空时重新使用即可

static class ViewHolder {
TextView text;
ImageView icon;
}

public View getView(int position, View convertView, ViewGroup parent) {
 ViewHolder holder;

 if (convertView == null) {
 convertView = mInflater.inflate(R.layout.list_item_icon_text,
 parent, false);
 holder = new ViewHolder();
 holder.text = (TextView) convertView.findViewById(R.id.text);
 holder.icon = (ImageView) convertView.findViewById(R.id.icon);
 convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}

  (推荐使用)

自定义适配器视图getview实现方法比较,布布扣,bubuko.com

时间: 2024-10-11 06:17:51

自定义适配器视图getview实现方法比较的相关文章

ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法

ListView使用的是自定义适配器,列表项的布局文件中含有文本和图标,实现文本区域和图标区域的点击事件. 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,分别设置文本区域和图标区域的OnClickListener,然后在activity界面中MyArrayAdapter实例实现这个接口. 1.listitem布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLa

android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法

定义的getView执行多次的ListView布局: [html] view plaincopy <ListView android:id="@+id/lv_messages" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layo

ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法

如果ListView使用的是自定义的适配器,比如MyArrayAdapter extends ArrayAdapter<String> 那么,如何实现适配器中的点击事件执行activity界面中的方法呢? 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,然后在activity界面中MyArrayAdapter实例实现这个接口. 较为完整的代码见上文. 1.MyArrayAdapter 关键代码 自定义接口和方法的代码如下: //列表项的单击事件监听接口 pub

【Android个人理解(二)】从实现方法深入了解自定义适配器的工作过程

自定义适配器时,需要重写BaseAdapter的getCount(),getItem(int position),getItemId(int position),getView()方法. 但是由于不了解每个方法在工作时发挥的作用,而不知道如何重写四个方法. 1.由Adapter的工作原理了解getCount()和getView()的作用. getCount()用来告诉系统Item的个数,也就是我们将要绘制的个数.因此我们如此重写这个方法: public int getCount() { retu

从实现方法深入了解自定义适配器的工作过程

转载:http://www.lai18.com/content/1631131.html 自定义适配器时,需要重写BaseAdapter的getCount(),getItem(int position),getItemId(int position),getView()方法. 但是由于不了解每个方法在工作时发挥的作用,而不知道如何重写四个方法. 1.由Adapter的工作原理了解getCount()和getView()的作用. getCount()用来告诉系统Item的个数,也就是我们将要绘制的

Android中GridView通过自定义适配器实现图文视图排列

Android中GridView组件用来以网格方式排列视图,与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要显示时,可以使用该组件.下面我们通过代码实现如下图例(为了方便截图,将事件处理(土司)设置到屏幕顶部) Layout下gridview.xml布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schema

自定义适配器

自定义适配器:productadapter.java 1 package com.tracesbility.adapter; 2 3 import java.util.List; 4 import java.util.Map; 5 6 import com.tracesbility.traceabilitybind.R; 7 8 import android.content.Context; 9 import android.view.LayoutInflater; 10 import andr

细解ListView之自定义适配器

下面我们将以一个例子来讲述ListView之自定义适配器 首先我们看一下效果图: [分析] 首先:需要创建一个ListView控件,自定义适配器是为了实现自定义ListView的ListView_Item,所以我们应该在创建一个Item 然后书写自定义适配器,自定义适配器的时候需要继承BaseAdapter,然后实现它的未实现的4个方法,然后在实现自定义适配器的构造方法,其构造方法的参数为山下文对象,数据源,必须实现的4个方法主要是对数据源进行过操作, 然后考虑优化方面,我们使用了ViewHol

安卓开发_浅谈ListView(自定义适配器)

ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ,实现图片文字混合列表 1 package com.example.work; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 7 8 import android.R.in