- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup.doc
【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup
概述
开发中,经常会用到动态在ScrollView、LinearLayout里addView的事,尤其是ItemView一样时,每次都要写一大堆代码 inflater 动态addView,很烦。
还有就是在嵌套ListView、ScrollView时,想采用LinearLayout替代,但动态addView步骤神烦。
这个时候就开始期待,能不能有一种快速为任意ViewGroup添加子View的东西。但是后来发现,采用继承某个ViewGroup做这个事情不够优雅?,对代码有侵入性,如果有其他ViewGroup需要动态addView,就会写重复的代码?。
前几天有人在群里问,如何方便的给ScrollView动态添加不同种类型的childView,类似RecyclerView那样。我之前的封装由于内部有一个简单的重用机制,只支持单一ItemType,也不支持多种类型的childView。
那么需求就来了:?*?快速简单使用?* 支持任意ViewGroup?*?无耦合?*?无侵入性?* Item支持多种类型
除此之外,我还加入:?* 为ItemView设置OnItemClickListener?* 为ItemView设置OnItemLongClickListener
本文就封装了这么一个东西。
核心:?* 利用Adapter模式封装getView的操作?* 搭配一个工具类,为所有ViewGroup addView。?* 再封装出两个使用快速简单的Adapter 分别用于添加?单一Item布局、多种Item布局。
PS:所以本文也算是填了之前的一个坑,在之前文末,我就提到要写一篇为流式布局增加Adapter的文章,作为Adapter的实战演练。使用本文封装的Adapter自然可以达到这一点。
由于采用Adapter隔离ViewGroup和ItemView,在切换ViewGroup时,十分方便。?如:在需求让你把一个HorizontalScrollView包裹的水平标签转换成流式布局时,只需要在xml替换控件即可。Adapter将自动完成适配的工作。其他代码一句不用修改。
不BB了,先看看以后如何使用吧,够不够简单粗暴。
使用预览
单一Item类型:
Adapter泛型传入JavaBean,构造函数传入数据集和layout布局,一句代码搞定:
//单一ItemView
ViewGroupUtils.addViews(mLinearLayout, new SingleAdapterTestBean(this, mDatas, R.layout.item_test) {
@Override
public void onBindView(ViewGroup parent, View itemView, TestBean data, int pos) {
Glide.with(LinearLayoutActivity.this)
.load(data.getAvatar())
.into((ImageView) itemView.findViewById(R.id.ivAvatar));
((TextView) itemView.findViewById(R.id.tvName)).setText(data.getName());
}
});
效果:
?以前会用ScrollView嵌套ListView,现在只要用ScrollView套LinearLayout即可,性能更佳。
多种Item类型:
多种Item类型分两种情况:
数据结构相同:
数据结构相同依然可以给Adapter传入泛型,避免强转:
//多种ItemViewType,但是数据结构相同,可以传入数据结构泛型,避免强转
ViewGroupUtils.addViews(linearLayout, new MulTypeAdapterMulTypeBean(this, initDatas()) {
@Override
public void onBindView(ViewGroup parent, View itemView, MulTypeBean data, int pos) {
您可能关注的文档
- 这学期我收获了快乐(文档篇).doc
- 决胜2017高考之全国名校试题物理分项汇编系列(全国新课标特刊):(第02期)专题02+相互作用+共点力的平衡(解析版).doc
- 档口宣传语.doc
- 秦玥飞感动中国议论文(精选篇).doc
- 日本花王株式会社(KaO Japan)以整合式客服中心提升顾客关系管理.doc
- (新编)福建省漳州市诏安县初中毕业班第二次中考模拟语文试题及答案.doc
- 一级建造师-机电工程项目管理实务(二).doc
- 商业模式的力量(模式篇) 字 投稿:田哧哨.doc
- 横向控制法心得体会 三九控制法心得体会.doc
- [周岁抓周物品清单]现代抓周物品清单.doc
- 小学毕业纪念册.pptx
- 生日宴百日宴主题模板.pptx
- 2025届高考地理一轮复习: 从人地作用看自然灾害 专题练习题(含答案解析).docx
- 2025届高中历史一轮复习:中国现代史 专题测试卷(含答案解析).docx
- 2025届高中历史一轮复习:世界近代史 专题测试卷(含答案解析).docx
- 2025届高中历史一轮复习:民国 专题测试卷(含答案解析).docx
- 2025届高考地理一轮复习: 自然环境的特征 专题练习题(含答案解析).docx
- 2025届高中历史一轮复习:世界古代史 专题测试卷(含答案解析).docx
- 2025届高考地理一轮复习: 地理环境与区域发展 专题练习题(含答案解析).docx
- 2025届高考地理一轮复习: 水体运动的影响 专题练习题(含答案解析).docx
文档评论(0)