首页

源码搜藏网

首页 > 安卓源码 > 控件分类 > 列表ListView >

Android打造万能的ListView和GridView适配器

创建时间:2017-02-08 09:22  

Android打造万能的ListView和GridView适配器
Android打造万能的ListView和GridView适配器
暂无演示 立即下载
1、概述
相信做Android开发的写得最多的就是ListView,GridView的适配器吧,记得以前开发一同事开发项目,一个项目下来基本就一直在写ListView的Adapter都快吐了~~~对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式,其实大部分的代码基本都是类似的。

话不多说,先看下我们的效果图:
 
2、通用的ViewHolder

首先分析下ViewHolder的作用,通过convertView.setTag与convertView进行绑定,然后当convertView复用时,直接从与之对于的ViewHolder(getTag)中拿到convertView布局中的控件,省去了findViewById的时间~

也就是说,实际上们每个convertView会绑定一个ViewHolder对象,这个viewHolder主要用于帮convertView存储布局中的控件。

那么我们只要写出一个通用的ViewHolder,然后对于任意的convertView,提供一个对象让其setTag即可;

既然是通用,那么我们这个ViewHolder就不可能含有各种控件的成员变量了,因为每个Item的布局是不同的,最好的方式是什么呢?

提供一个容器,专门存每个Item布局中的所有控件,而且还要能够查找出来;既然需要查找,那么ListView肯定是不行了,需要一个键值对进行保存,键为控件的Id,值为控件的引用,相信大家立刻就能想到Map;但是我们不用Map,因为有更好的替代类,就是我们android提供的SparseArray这个类,和Map类似,但是比Map效率,不过键只能为Integer.

下面看我们的ViewHolder类:

 

[Java] 查看源文件 复制代码
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
  • Android基于FlatList的上拉、下拉刷新组件
    react-native-refresh-list-view 初学react native,看到github上现有的相关控件实现都较为复杂,又不太符合自己心中想要的样子。于是自己做了一个简单的列表下拉、上拉刷新控件。列表使用的是FlatList。 控件的实现非常简单,代码一共100多行,方便各位根据
  • Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗
    主要特点 视频全屏播放和浮层小窗播放 可以完全自定义UI 能在ListView、ViewPager和ListView、ViewPager和Fragment等多重嵌套模式下全屏工作 手势修改进度和音量 视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中 可以在加载、暂停
  • Android中RecyclerView的自定义布局管理器模仿TextView跨行为,
    这是ChipsLayoutManager - 自定义Recycler View的LayoutManager,当当前没有剩余空间时,将项目移动到下一行 这种布局管理器可以代表 谷歌的芯片材料的设计模式 作为一个android开发人员,我看到google不是很有礼貌支持我们的所有愿望,当我面对这样的常见任
  • 一个下拉刷新上拉加载更多的Android框架
    这是一个下拉刷新上拉加载更多框架 (PS:后期还会加入一些常用的功能),头部用的秋哥的 Android系统的超拉至刷新 ,底部和没有数据的状态自己实现的。其实刚刚开始我是想找个库直接用的 ,试了几个排名靠前的,感觉跟自己想要的不太一样,索性自己写了一个
  • 用于在RecyclerView和AbsListView上创建简单分页功能的库
    Android的库,用于在创建简单的分页功能(又名无限滚动) RecyclerView 或 AbsListView 。 特征 配置允许您设置自动添加/删除加载列表项(默认启用) 自定义加载列表项 - inflate和bind(如果未提供自定义加载列表,将使用默认加载列表项视图) 自定义 SpanS
Powered by 源码搜藏网
© 2012-2022
分享精神,快乐你我!联系QQ:xxxxxxxx
本站资源是从网络整理所得,如果无意侵犯了贵司版权,请与源码搜藏网联系,我们会及时处理和回复,谢谢!