欢迎来到天天文库
浏览记录
ID:37417086
大小:4.16 MB
页数:28页
时间:2019-05-23
《【android】快速开发偷懒必备,一句话搞定所有viewgroup的adapter . 支持自定义viewgroup》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter.支持自定义ViewGroup概述开发中,经常会用到动态在ScrollView、LinearLayout里addView的事,尤其是ItemView一样时,每次都要写一大堆代码inflater动态addView,很烦。还有就是在嵌套ListView、ScrollView时,想采用LinearLayout替代,但动态addView步骤神烦。这个时候就开始期待,能不能有一种快速为任意ViewGroup添加子View的东西。但是后来发现,采用继承某个ViewGrou
2、p做这个事情不够优雅 ,对代码有侵入性,如果有其他ViewGroup需要动态addView,就会写重复的代码 。前几天有人在群里问,如何方便的给ScrollView动态添加不同种类型的childView,类似RecyclerView那样。我之前的封装由于内部有一个简单的重用机制,只支持单一ItemType,也不支持多种类型的childView。那么需求就来了: * 快速简单使用 *支持任意ViewGroup * 无耦合 * 无侵入性 *Item支持多种类型除此之外,我还加入: *为ItemView设置OnItemClickListener *
3、为ItemView设置OnItemLongClickListener本文就封装了这么一个东西。核心: *利用Adapter模式封装getView的操作 *搭配一个工具类,为所有ViewGroupaddView。 *再封装出两个使用快速简单的Adapter分别用于添加 单一Item布局、多种Item布局。PS:所以本文也算是填了之前的一个坑,在之前文末,我就提到要写一篇为流式布局增加Adapter的文章,作为Adapter的实战演练。使用本文封装的Adapter自然可以达到这一点。由于采用Adapter隔离ViewGroup和ItemView,
4、在切换ViewGroup时,十分方便。 如:在需求让你把一个HorizontalScrollView包裹的水平标签转换成流式布局时,只需要在xml替换控件即可。Adapter将自动完成适配的工作。其他代码一句不用修改。不BB了,先看看以后如何使用吧,够不够简单粗暴。使用预览单一Item类型:Adapter泛型传入JavaBean,构造函数传入数据集和layout布局,一句代码搞定://单一ItemViewViewGroupUtils.addViews(mLinearLayout,newSingleAdapter(this,
5、mDatas,R.layout.item_test){@OverridepublicvoidonBindView(ViewGroupparent,ViewitemView,TestBeandata,intpos){Glide.with(LinearLayoutActivity.this).load(data.getAvatar()).into((ImageView)itemView.findViewById(R.id.ivAvatar));((TextView)itemView.findViewById(R.id.tvName)).setTe
6、xt(data.getName());}});效果: 以前会用ScrollView嵌套ListView,现在只要用ScrollView套LinearLayout即可,性能更佳。多种Item类型:多种Item类型分两种情况:数据结构相同:数据结构相同依然可以给Adapter传入泛型,避免强转://多种ItemViewType,但是数据结构相同,可以传入数据结构泛型,避免强转ViewGroupUtils.addViews(linearLayout,newMulTypeAdapter(this,initDatas()){@
7、OverridepublicvoidonBindView(ViewGroupparent,ViewitemView,MulTypeBeandata,intpos){((TextView)itemView.findViewById(R.id.tvWords)).setText(data.getName()+"");Glide.with(MulTypeActivity.this).load(data.getAvatar()).into((ImageView)itemView.findViewById(ivAvatar));}});效果:数据结构不
8、同:如果数据结构不同,则不用传入泛型,但是使用时需要强转://多种Item类型:数据结构不同不传泛型了使用时需要强转javaBean,判断ItemLayoutIdV
此文档下载收益归作者所有