博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EasyTabPager
阅读量:6996 次
发布时间:2019-06-27

本文共 3921 字,大约阅读时间需要 13 分钟。

EasyTabPager


一个通用中间组件,简单通用的适配ViewPager,以及pager中的RecycleView

简化复杂的操作,简单直接。------

To Use


In Gradle

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

In Maven

me.ccj.EasyTabPager
tabpager_library
1.0.1
pom

In Your Application

img_b38c772770f570128e0e845e22887163.jpe
/*****************初始化控件************/        comm_test_view=(ZDMCommonPagerView)findViewById(R.id.comm_test_view);        /*****************初始化数据和adapter************/        List
demoModels1 = loadData(getBaseContext()); List
demoModels2 = loadData(getBaseContext()); List
demoModels3= loadData(getBaseContext()); BaseCommonRcvAdapter adapter1 = new BaseCommonRcvAdapter(demoModels1); BaseCommonRcvAdapter adapter2 = new BaseCommonRcvAdapter(demoModels2); BaseCommonRcvAdapter adapter3 = new BaseCommonRcvAdapter(demoModels3); //spinner设置adapteer ArrayAdapter
adapter=new ArrayAdapter
(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的vpagerId data - 每一个pager对应的data recycleAdapter - 每一个pager对应的 adapter title - pager的title swipRes - swipLayout的Id revrRes - recycleView的Id onSwipRefreshListener - 刷新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


easyTabPager2.gif

思路和类结构


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

1.关于CommonAdapter

一个拆分简化RecycleView中ViewHolder的Adapter,详情请点击传送门

2.关于TabItem

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

public class TabItem {    View view;//tab 持有的view,可能是recycleview    RecyclerView recyclerView;    SwipeRefreshLayout swipeRefreshLayout;    String title; //tab 持有的tab的title    RecyclerView.Adapter baseRecycleAdapter;//备用,每个view持有一个adapter    List data;//每一个pager Item 持有一个data        ```###3.关于ListConfig他是`TabItem `的持有者,相当于业务层,持有`TabItem`的List集合,并负责对TabItem的存取,以及监听设置。内部持有`InPagerAdapter` 保证viewpager的正常运转。它来作为中间层,和外部调用者进行交互。###4.ZDMListConfigBuilder(保留,未使用)一个Builder类,负责创建Pager。主要方法是```java *  *      builder = new ZDMListConfigBuilder(this)
.setVpager(vpager)
.setVtab(vtab)
.setRecycleAdapter(new TestAdapter(meiZhi, this))
.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题1")
.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题2")
.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题3")
.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题4")
.addTab((RecyclerView) inflater.inflate(R.layout.vpager, null),"标-题5")
.show();
*
* 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作为通用控件。。。。 就这样吧。。。

详情参看代码。

转载地址:http://bjdvl.baihongyu.com/

你可能感兴趣的文章
智能健康行业突破不大,却走向“歪路”
查看>>
机器人也有触感了!斯坦福大学开发人工感觉神经系统让蟑螂抽搐
查看>>
5 Reasons Why You Should Try Kibana
查看>>
阿里云网络漏洞扫描系统AVDS(商业化)发布
查看>>
Pam认证模块
查看>>
解决tomcat"Could not reserve enough space for object heap"
查看>>
sersync实现主机实时双向同步
查看>>
卸载并重新配置mysql服务
查看>>
同行的一个案例---删除表,需要恢复
查看>>
python splinter 小坑说明
查看>>
JAVA并行框架:Fork/Join
查看>>
控制input输入格式
查看>>
linux系统上安装java
查看>>
38.进程管理与计划任务---PS、Top、Crontab
查看>>
0301_互连模拟
查看>>
一次XEN启动中的错误捕获
查看>>
重大里程碑:顶级科学家达成23条人工智能发展原则!
查看>>
esxi嵌套华为Fusioncomputer安装VRM几个关键步骤。
查看>>
/etc/init.d/mysqld:line 260:my_print_defaults:command not found
查看>>
DNS设置引起的登录延迟
查看>>