EasyTabPager

项目地址:ccj659/EasyTabPager 

简介:一个通用中间组件,简单通用的适配 ViewPager,以及 pager 中的 RecycleView 简化复杂的操作,简单直接。

标签:ViewPager-RecycleView-


一个通用中间组件,简单通用的适配 ViewPager,以及 pager 中的 RecycleView 简化复杂的操作,简单直接。

To Use


In Gradle

compile 'me.ccj.EasyTabPager:tabpager_library:1.0.1'

In Maven

<dependency><groupId>me.ccj.EasyTabPager</groupId><artifactId>tabpager_library</artifactId><version>1.0.1</version><type>pom</type>
</dependency>

In Your Application

/*****************初始化控件************/comm_test_view=(ZDMCommonPagerView)findViewById(R.id.comm_test_view);/*****************初始化数据和 adapter************/List<DemoModel> demoModels1 = loadData(getBaseContext());List<DemoModel> demoModels2 = loadData(getBaseContext());List<DemoModel> demoModels3= loadData(getBaseContext());BaseCommonRcvAdapter adapter1 = new BaseCommonRcvAdapter(demoModels1);BaseCommonRcvAdapter adapter2 = new BaseCommonRcvAdapter(demoModels2);BaseCommonRcvAdapter adapter3 = new BaseCommonRcvAdapter(demoModels3);//spinner 设置 adapteerArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, obj);adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);/************设置监听*****************/comm_test_view.setOnClickListener(this);comm_test_view.setSpinner(adapter,this);/************增加 Tab Pager 页面*****************//*** vpagerId - 每一个 pager 的 vpagerIddata - 每一个 pager 对应的 datarecycleAdapter - 每一个 pager 对应的 adaptertitle - pager 的 titleswipRes - swipLayout 的 IdrevrRes - recycleView 的 IdonSwipRefreshListener - 刷新 refresh 和加载更多 loadmore 回调借口*/comm_test_view.addTab(R.layout.vpager1, demoModels1, adapter1, "标-题 1", R.id.sr_layout, R.id.list, this);comm_test_view.addTab(R.layout.vpager1, demoModels2, adapter2, "标-题 2", R.id.sr_layout, R.id.list, this);comm_test_view.addTab(R.layout.vpager1, demoModels3, adapter3, "标-题 3", R.id.sr_layout, R.id.list, this);/************展示方法*****************/comm_test_view.show();

Example


思路和类结构


本通用中间组件,思想在于,用一个组件,简单通用的适配 ViewPager,以及 pager 中的 RecycleView,并且将其中的监听事件,抽离暴露出来方便调用。方便独立调用,以及扩展。

1.关于 CommonAdapter

一个拆分简化 RecycleView 中 ViewHolder 的 Adapter,详情请点击传送门通过封装 BaseAdapter 和 RecyclerView.Adapter 得到的通用的,简易的 Adapter

2.关于 TabItem

TabItem 是一个类,就是每一个 viewpager 的对象, 持有 Tab 标签的名字,每个 tab 的 View 以及其中的 RecyclerView 和 SwipeRefreshLayout,还有每一个 RecyclerView 的 Apdater(结合 CommonAdapter). 它算是一个对象持有者。

public class TabItem {View view;//tab 持有的 view,可能是 recycleviewRecyclerView recyclerView;SwipeRefreshLayout swipeRefreshLayout;String title; //tab 持有的 tab 的 titleRecyclerView.Adapter baseRecycleAdapter;//备用,每个 view 持有一个 adapterList data;//每一个 pager Item 持有一个 data

3.关于 ListConfig

他是TabItem的持有者,相当于业务层,持有TabItem的 List 集合,并负责对 TabItem 的存取,以及监听设置。内部持有InPagerAdapter 保证 viewpager 的正常运转。它来作为中间层,和外部调用者进行交互。

4.ZDMListConfigBuilder(保留,未使用)

一个 Builder 类,负责创建 Pager。主要方法是

* <code>*      builder = new ZDMListConfigBuilder(this)<br>.setVpager(vpager)<br>.setVtab(vtab)<br>.setRecycleAdapter(new TestAdapter(meiZhi, this))<br>.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题 1")<br>.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题 2")<br>.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题 3")<br>.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题 4")<br>.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题 5")<br>.show();<br>*<br>*     </>public ZDMListConfigBuilder addTab(View view,List data,RecyclerView.Adapter recycleAdapter, int positon, String title, int swipRes, int revrRes, OnSwipRefreshListener onSwipRefreshListener) {config.addTab(view,data,recycleAdapter, positon,title,swipRes,revrRes,onSwipRefreshListener);return this;}

5.关于 ZDMCommonPagerView

本来想用上面的 Builder,后来想想,还是直接封装在 View 中比较实在.....

该 View 作为通用控件。。。。 就这样吧。。。

详情参看代码。

一个通用中间组件,简单通用的适配 ViewPager,以及 pager 中的 RecycleView 简化复杂的操作,简单直接。相关推荐

  1. MIS通用管理组件_通用管理组件V2.1.0发布

    MIS通用管理组件是一个基于.NET4.0的MIS微型框架,实现单点登录,MIS类管理系统集群化管理配置,操作权限细化,数据集权限逐级授权:提供C/S代码生成器,丰富的类库:提供全部相关的源代码,为广 ...

  2. 书写一个管理平台开发常用的通用table组件

    来现在这公司一年了,一年时间里经手做的项目有六七个,不过呢大部分都是一些管理平台的功能,而管理平台做的最多的就是各种表格的展示了,所以在开发过程中,为了提高开发效率,封装一些通用的功能组件是十分有必要 ...

  3. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

  4. Vue实战(六)通用Table组件

    本文是Vue实战系列的第六篇文章,主要介绍Falcon项目中通用 Table 组件的开发和使用 .Falcon项目地址:https://github.com/thierryxing/Falcon 通用 ...

  5. 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:huanzi-qch cnblogs.com/huanzi- ...

  6. com组件 安全提示_【加粉利器】百度基木鱼通用微信组件上线

    基木鱼产品功能更新为了整体提升基木鱼平台页面制作能力及满足不同客户对转化组件的设置.使用诉求,基木鱼平台重点上线"新增通用微信组件"产品功能. 01 通用微信组件 优化内容:基木鱼 ...

  7. ajaxfileupload 访问不到后台_一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)...

    前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登录用户修改密码.配置个性菜单等 技术栈 前端:la ...

  8. c# 基于layui的通用后台管理系统_简单通用的Java后台管理系统

    前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登录用户修改密码.配置个性菜单等 技术栈 前端:la ...

  9. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、

    1.0 封装一个通用的工具栏 目标:封装一个通用的工具栏供大家使用 1.1 通用工具栏的组件结构 在后续的业务开发中,经常会用到一个类似下图的工具栏,作为公共组件,进行一下封装 组件 src/comp ...

最新文章

  1. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名
  2. MySQL 高级 - 触发器 - 介绍
  3. 测试===JUnit单元测试
  4. 上下文管理、redis发布订阅、RabbitMQ发布订阅、SQLAlchemy
  5. RTMP规范简单分析
  6. python123九宫格输入_使用python PIL库实现简单验证码的去噪方法步骤
  7. 打开多个Excel2010文档在同一个窗口中显示问题如何解决
  8. 算法:找出存在子字符串的最先位置28. Implement strStr()
  9. OrCAD(三)电路仿真
  10. WORD文档-最后一页空白页无法删除
  11. 解决ROS中运行launch文件报错ERROR: cannot launch node of type[xxx/xxx]:xxx的问题
  12. 语音文件aac-raw-wav格式转换方法
  13. 烤仔的朋友们 | 细数11位身价超十亿美元加密富豪,灰度创始人仅排第七
  14. 基于`IRIS`,动态解析`HL7`消息
  15. 高等数学(第七版)同济大学 习题1-3 个人解答
  16. 计算机组成原理实训重要吗,计算机组成原理实训_报告.doc
  17. Android-代码设置TextView字体加粗或者不加粗
  18. 图像处理方向常用网站
  19. CSS - Flexbox总结
  20. 历年数学建模大赛优秀论文解读

热门文章

  1. CloudStack使用KVM时设置虚拟实例的CPU型号
  2. python c++情侣网名是什么意思_“果然,他用的是情侣网名!”
  3. Unity报错但VS(代码编辑器)不报错,Unity提示需要继承自MonoBehavior,Unity提示缺少命名空间或者DLL,Unity点击UI或者GameObject无法在Hierarchy锁定
  4. linux关机重启机器人,Linux Stopped (tty output) 问题
  5. 奔驰采用鸿蒙系统,华为10分钟秒充190公里模块出口奥地利,奔驰使用鸿蒙系统!...
  6. java 云笔记_云笔记系统的设计与实现 PDF 下载
  7. 海思平台OSD的实现(1)
  8. 神经网络(NN)网络构建及模型算法介绍
  9. ubuntu 16.04极速安装ROS-Kinetic,以及常见错误处理
  10. MAC OS下编译tensorflow 2.4.1 - 支持GPU CUDA 10.1和AVX2 FMA