文档章节

万能的Entry,两个变量的Model/JavaBean再也不用写了!

孤独的探索号
 孤独的探索号
发布于 2016/05/08 23:55
字数 605
阅读 5.3K
收藏 15

前言

很多时候传数据需要只含两个变量的Model/JavaBean,但就为了两个变量去写一个Model/JavaBean实在是麻烦,而且类型固定重用性低。比如:

1.网格显示的头像-名称 需要 String-String类型的一个GridBean

 

2.日期选择器的Item 需要Boolean-String类型的一个GridPickerItemBean

 

3.Http请求类参数 需要String-Object类型的一个Parameter

 

。。。

 

有什么方法可以不用写一大堆这样的自定义Model/JavaBean吗?

用Map<K, V> 或Set<T> ?

很多地方(比如Adapter中的数据列表)都要求序列化,而Map(包括LinkedHashMap) 和 Set(包括LinkedHashSet)都没有get(int index)方法,不能满足需求。

大家知道,List支持序列化,有get(int index)方法,加上Entry<K, V>里面的K, V都是自定义类型,所以用List<Entry<K, V>>既支持序列化,又能储存两个任意类型变量。

 

用SDK里的Entry?

SDK内提供了3种Entry

 

DropBoxManager.Entry只有这几种Constructor,明显不能满足需求

 

KeyStrore.Entry不能存取数据,明显不能满足需求

 

Map.Entry只有一个构造器,且必须在构造时实现里面几个抽象方法,使用太麻烦,还不能setKey

 

所以我写了一个Entry<K, V>来解决以上问题。

 

ZBLibrary万能Entry<K, V> 使用方法

只需要修改Entry<K, V>中的 K 和 V 为任何你需要的类型,其它和普通的Model/JavaBean一样。

以上面3个Model/JavaBean使用场景为例:

  先将Entry<K, V>放到工程中,然后

  1. 删除GridBean,其它类中的GridBean全部改为Entry<String, String>

  2. 删除GridPickerItemBean,其它类中的GridPickerItemBean全部改为Entry<Boolean, String>

  3. 删除Parameter,其它类中的Parameter全部改为Entry<String, Object>

  

  如果不想删除原来的Model/JavaBean,还可以通过继承Entry<K, V>来简化原来的Model/JavaBean:

  1. GridBean extends Entry<String, String>

     

  2. GridPickerItemBean extends Entry<Boolean, String>

     

  3. Parameter extends Entry<String, Object> 

 

 

Entry<K, V>下载地址(欢迎Star,欢迎Fork)

https://github.com/TommyLemon/Android-ZBLibrary/blob/master/ZBLibrary(ADT)/ZBLibrary/src/zuo/biao/library/bean/Entry.java

 

© 著作权归作者所有

孤独的探索号

孤独的探索号

粉丝 154
博文 23
码字总数 29911
作品 5
深圳
私信 提问
加载中

评论(0)

万能的Entry,两个变量的Model/JavaBean再也不用写了!--Android-Entry

前言 很多时候传数据需要只含两个变量的Model/JavaBean,但就为了两个变量去写一个Model/JavaBean实在是麻烦,而且类型固定重用性低。比如: 1.网格显示的头像-名称 需要 String-String类型的...

孤独的探索号
2016/05/09
790
0
Android快速开发框架-ZBLibrary 源码分享

坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性好。Android Studio、Eclipse多平...

孤独的探索号
2016/04/18
7.8K
13
ZBLibrary 19.0 发布,Star 数已达 3K

更新内容: 新增一键自动删除所有编译缓存 build 目录的 Window 批处理脚本 clearAllBuildCache.bat; getActivity 抽象到 BaseActivity; 解决条形码与预览框的水平倾角超过30%识别不了,感...

孤独的探索号
2018/11/28
2.5K
0
Android快速开发框架 - Android-ZBLibrary

ZBLibrary-Android快速开发框架 MVP架构的Android快速开发框架, 提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性好。 OKHttp、UIL图片加载、...

孤独的探索号
2016/04/21
6.9K
5
TommyLemon/Android-ZBLibrary

ZBLibrary-Android快速开发框架 坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性...

TommyLemon
2016/04/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何确定Python变量的类型? - How to determine a Python variable's type?

问题: How do I see the type of a variable whether it is unsigned 32 bit, signed 16 bit, etc.? 如何查看变量的类型,无论是无符号32位,带符号16位等等? How do I view it? 我该如何看...

javail
今天
69
0
略谈分布式系统中的容器设计模式

本文作者:zytan_cocoa 略谈分布式系统中的容器设计模式 谭中意 2020/3/5 前言:云原生(Cloud Native)不仅仅是趋势,更是现在进行时,它是构建现代的,可弹性伸缩的,快速迭代的计算网络服...

百度开发者中心
03/11
87
0
a small thing that made me a little bit depressed

It was just two hours ago,specificly speaking It was 11:48 almost coming close to midneight. I was pratising singing songs in my renting room which is a sharing apartment . I re......

lost_myself
今天
74
0
OSChina 周日乱弹 —— 这中间几个月的地震、核爆、外星人、高达... 去哪了

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Elizabeth》- Ashram 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :#共...

小小编辑
今天
163
0
CentOS 7 安装 Redis 5.0.8

1. 下载安装包 wget http://download.redis.io/releases/redis-5.0.8.tar.gz 2. 解压安装包 tar -xzvf redis-5.0.8.tar.gz 3. 编译 cd redis-5.0.8make 4. 启动 redis ./src/redis-server......

北漂的我
今天
111
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部