标签: Android Adapter ViewHolder

Adapter 的理解

Adapter :适配器,因为 ListView 是一个 View ,不能添加子项,因此在呈现数据的时候就需要某种工具将数据呈现在 ListView 上,而 Adapter 就能充当此角色。常用的 Adapter:ArrayAdapter、BaseAdapter等。

ViewHolder 的理解

要想使用 ListView 就需要编写一个 Adapter 将数据适配到 ListView上,而为了节省资源提高运行效率,一般自定义类 ViewHolder 来减少 findViewById() 的使用以及避免过多地 inflate view,从而实现目标。

Adapter的定义

继承 BaseAdapter (可在继承的时候指定泛型,扩展使用);

重写四个基本方法:

getCount():获取数据的总的数量,返回 int 类型的结果;

getItem(int position) :获取指定位置的数据,返回该数据;

getItemId(int position):获取指定位置数据的id,返回该数据的id,一般以数据所在的位置作为它的id;

getView(int position,View convertView,ViewGroup parent):关键方法,用于确定列表项

创建 ViewHolder (包含列表项的控件。)

代码展示(部分)

public class MyListAdapter extends BaseAdapter // 类定义

// 自定义数据集与布局加载器

List notes;

LayoutInflater inflater;

/** 构造方法 */

public MyListAdapter(Context context,List notes){

this.notes = notes;

inflater = LayoutInflater.from(context);

}

/** 重写方法 */

@Override

public int getCount(){

return notes.size();

}

@Override

public Object getItem(int position){

return notes.get(position);

}

@Override

public long getItemId(int position){

return position;

}

@Override

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

ViewHolder viewHolder;

// 若无可重用的 view 则进行加载

if(converView == null){

convertView = inflater.inflate('列表项布局文件',parent,false);

// 初始化 ViewHolder 方便重用

viewHolder = new ViewHolder();

viewHolder.tvTitle = (TextView) convertView.findViewById('id1');

viewHolder.tvContent = (TextView) convertView.findViewById('id2');

converView.setTag(viewHolder);

}else{ // 否则进行重用

viewHolder = (ViewHolder)convertView.getTag();

}

// 获得条目内容对象

Note note = notes.get(position);

// 设置内容(Note Bean 需要自定义)

viewHolder.tvTitle.setText(note.getTitle());

viewHolder.tvContent.setText(note.getContent());

return converView;

}

/** 创建 ViewHolder */

class ViewHolder{

TextView tvTitle;

TextView tvContent;

}

至此,一个比较基础的 Adapter 已经完成,里面包含了 ViewHolder 的基本使用,初学者可以参考次文档进行 Adapter 的编写。

2017.3.7

android listview 获取viewholder,Android ViewHolder 的基本使用相关推荐

  1. android listview边框颜色,Android实现带有边框的ListView和item的方法

    本文实例讲述了Android实现带有边框的ListView和item的方法.分享给大家供大家参考,具体如下: 想为ListView和item四周添加边框有两种方法: 1.贴一张带有边框效果的背景图 2 ...

  2. android listview分页显示,Android应用中使用ListView来分页显示刷新的内容

    点击按钮刷新1.效果如下: 实例如下:  上图的添加数据按钮可以换成一个进度条  因为没有数据所以我加了一个按钮添加到数据库用于测试:一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户: ...

  3. android listview 横向滚动,Android支持水平滚动的ListView控件

    前言 ListView是一个纵向滚动的列表视图,也有朋友嵌套HorizontalScrollView来实现,比如这里,但在ListView的API中明确指明了两者不可同时使用.本文分享一种办法,以方便 ...

  4. android listview自定义顶部,Android自定义Adapter的ListView的思路及代码

    在开发中,我们经常使用到ListView这个控件.Android的API也提供了许多创建ListView适配器的快捷方式.例如ArrayAdapter.SimpleAdapter和SimpleCurs ...

  5. android listview divider color,android listview 属性

    1. 背景色: listView设置背景色android:background="@drawable/bg",拖动或者点击list空白位置的时候发现ListItem都变成黑色. 因 ...

  6. android apk获取权限,Android apk 获取系统权限的方式

    Android系统中,权限等级分为 ["normal" | "dangerous"| "signature" | "signatu ...

  7. android listview 风格,【Android】listview卡片式列表的实现

    首先需要把listview的XML改一下风格,着重注意粗体部分. 特别是 android:clipToPadding="false" 并且要记得,ListView的父控件背景颜色设 ...

  8. android xml获取指定,android:如何从xml文件中获取信息?

    我得到一个程序,从一个链接的服务器获取天气.我已经做了一些将字符串结合到URL的字符串.我现在需要从XML文件中获取信息.android:如何从xml文件中获取信息? 这是我的代码:(我更换了,为了安 ...

  9. android定位获取坐标系,Android 定位坐标过滤算法实现

    繁星coding 1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供 ...

  10. android 温度传感器获取温度,Android 温度传感器返回当前的温度

    1)温度传感器返回当前的温度,单位是摄氏度(°C). 2)具体代码如下 package com.example.androidapp; import android.hardware.Sensor; ...

最新文章

  1. ORACLE解决登陆em状态暂挂方法
  2. 效果广告点击率预估实践:在线学习
  3. 如何破解Red Hat Enterprise 4的root密码(救援有密码)
  4. 当outlook打开附件的EXCEL表报出 文件已经损坏 但别人能打开时
  5. 阿里云物模型层功能分析
  6. 24-移动端app数据爬取
  7. nginx 上传 文件超时设置_Ingressnginx自定义配置文件
  8. 还原哈希密码工具(hash、md5)
  9. ubuntu离线安装依赖
  10. 正则表达式 贪婪与懒惰
  11. SSH整合报错:找不到元素 'beans' 的声明
  12. Android Studio 安装说明
  13. 第一章 Verilog语言和Vivado初步使用
  14. 一些易被忽视且难度较高的Web前端面试题汇总
  15. 简易2D横版RPG游戏制作
  16. 【跟我做】简单两部使用laravel-easy-WeChat包快速实现微信企业付款到用户零钱包功能...
  17. JS:利用函数,求任意三个数最大值,任意两个数的任意运算结果,判断任意数值是否为素数。
  18. High-Resolution Net(HRNet) 论文笔记
  19. dht11传感器c语言程序,数字温湿度传感器DHT11 操作C语言源代码
  20. vue项目获取下拉框选中id_vue获取下拉框值

热门文章

  1. 官方FastReport 2021最新中文开发者指南
  2. 财智理财7破解思路与总结
  3. WPA无线密码破解利器EWSA/跑包软件
  4. linux 分区格式化类型,Linux分区格式化
  5. linux驱动无线网卡数据发送,基于Linux的无线网卡驱动程序
  6. SplitContainer控件设置固定比例
  7. html怎么制作图片按钮效果,如何制作一个漂亮的 CSS 按钮
  8. DirectShow 开启摄像头
  9. 北通G3游戏手柄开箱体验,原来手游高手都是这么成就的
  10. StretchDIBits 的使用