IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android kotlin扩展添加域名 -> 正文阅读

[移动开发]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,但是看这段代码也应该知道是啥意思,就是类似androidRecyclerView下拉刷新和上拉加载的功能

所以,这段代码有什么特点呢 ?

放大这段代码来看细节:

// 立即进入刷新状态
self.tableView.mj_header?.beginRefreshing()

// 空闲状态
self->_tableView.mj_footer.state = MJRefreshStateIdle;

// 没有更多数据状态
self.tableView.mj_footer.state = MJRefreshStateNoMoreData;

从这段代码中,可以看出,是一个mj的大佬写的框架,因为他给tableView添加了域名[mj] 那么要想在kotlin中也实现这种效果,如何做到呢?

先来看最终完成的效果:

image-20220425144047394

可以无限的扩展

完整代码

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
    }
}

代码很简单,但是一定会有一部分同学看到这个需求脑袋一懵,无从下手.

本篇代码量很少,只是分享一下其他平台一些好的东西 …

67A9F5D70577316795377A8C30272711

原创不易,您的点赞就是我最大的支持!

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:52:02  更:2022-04-26 11:52:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:26:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码