android kotlin扩展添加域名
Posted android超级兵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android kotlin扩展添加域名相关的知识,希望对你有一定的参考价值。
android kotlin扩展添加域名?
你是否常为和系统方法变量起名冲突而烦恼?
你是否常为过多的方法名查找起来而而困惑?
你是否常为不知道谁写出的垃圾代码而头痛?
今天,给大家介绍一种添加域名的办法 , 让你的代码都添加上你的名字, 从此让你有更多的姿势来甩锅
tips: 灵感来自于ios
先来看一段简单的IOS代码:
objC写法:
//下拉刷新
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^
// 空闲状态
self->_tableView.mj_footer.state = MJRefreshStateIdle;
// page = 1
self->_mCurrentPage = 1;
// 请求网络数据
[self requestHttpData:self->mCurrentPage];
];
//上拉加载
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^
// 空闲状态
self->_tableView.mj_footer.state = MJRefreshStateIdle;
// page++
self->_mCurrentPage ++;
// 加载数据
if(self->_mCurrentPage <= self->_mPageCount)
[self requestHttpData:self->mCurrentPage];
else
// 到底了 设置状态为没有更多数据
self.tableView.mj_footer.state = MJRefreshStateNoMoreData;
];
// 立即进入刷新状态
[ self.tableView.mj_header beginRefreshing];
swift写法:
self.tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock:
// 设置状态为空闲状态
self.tableView.mj_footer?.state = .idle
self.mCurrentPage = 1
// 请求网络数据
requestHttpData(page:self.mCurrentPage)
)
self.tableView.mj_footer = MJRefreshBackFooter.init(refreshingBlock:
// 设置状态为空闲状态
self.tableView.mj_footer?.state = .idle
self.mCurrentPage += 1
// 请求下拉数据
if(self.mCurrentPage <= self.mCurrentCount)
requestHttpData(page:self.mCurrentPage)
else
// 没有更多数据
self.tableView.mj_footer?.state = .noMoreData
)
// 立即进入刷新状态
self.tableView.mj_header?.beginRefreshing()
tips:
- tableView 相当于 RecyclerView
虽然不懂IOS
,但是看这段代码也应该知道是啥意思,就是类似android
中RecyclerView
下拉刷新和上拉加载的功能
所以,这段代码有什么特点呢 ?
放大这段代码来看细节:
// 立即进入刷新状态
self.tableView.mj_header?.beginRefreshing()
// 空闲状态
self->_tableView.mj_footer.state = MJRefreshStateIdle;
// 没有更多数据状态
self.tableView.mj_footer.state = MJRefreshStateNoMoreData;
从这段代码中,可以看出,是一个mj
的大佬写的框架,因为他给tableView
添加了域名[mj] 那么要想在kotlin
中也实现这种效果,如何做到呢?
先来看最终完成的效果:
可以无限的扩展
完整代码
val String.szj: SZJStringExtImpl
get() = SZJStringExtImpl.getInstance(this)
interface SZJ<T>
class SZJStringExtImpl private constructor(private val str: String) : SZJ<String>
companion object
@SuppressLint("StaticFieldLeak")
private var instance: SZJStringExtImpl? = null
@Synchronized
fun getInstance(t: String): SZJStringExtImpl
if (instance == null)
instance = SZJStringExtImpl(t)
return instance ?: SZJStringExtImpl(t)
fun getNumberLength() = let
str.filter
it in ('0'..'9')
.toList().size
fun getNotNumberLength() = let
str.filter
it !in ('0'..'9')
.toList().size
代码很简单,但是一定会有一部分同学看到这个需求脑袋一懵,无从下手.
本篇代码量很少,只是分享一下其他平台一些好的东西 …
原创不易,您的点赞就是我最大的支持!
以上是关于android kotlin扩展添加域名的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin NullPointer Exception Android [关闭]