仔细想想AlertDialog的使用场景, 它并不像TextView和Button那些控件似的一般都是固定在界面上,而是在某个时机才会触发出来(比如用户点击了某个按钮或者断网了)。...所以AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题、图标和按钮等内容的。...,用户在选好某一项之后记下其选择,下次点开对话框时就默认选中该项。...仔细阅读谷歌的API文档就知道了,setSingleChoiceItems 方法中实现的onClick方法中which表示的是当前选中的列表中的item下标,而setPositiveButton和setNegativeButton...的对象调用的,所以这里的代码顺序会稍有不同:我们要先创建AlertDialog对象和View对象,然后再去初始化对话框中的控件。
尝试将以上Java代码转换为Kotlin代码,则改写后的Kotlin代码如下所示: val builder = AlertDialog.Builder(this) builder.setTitle...说时迟那时快,在Android Studio上面把Spinner上述的Java代码转换为Kotlin,不一会儿就生成了如下的Kotlin代码: private fun initSpinner...倘若仅仅是一个带箭头的文本,毫无疑问使用文本视图TextView就可以了,箭头图标可以在布局文件中通过drawableRight属性来指定。...下面给出AlertDialog对应selector函数的Java实现代码,方便读者理解它的本质: AlertDialog.Builder builder = new AlertDialog.Builder...实现该对话框的话,有了水平进度对话框的的先例,不出意料只需以下的两行Kotlin代码就行了: val dialog = indeterminateProgressDialog("正在努力加载页面
目前为止 WorkManager 系列已经讨论过: Android Jetpack WorkManager | Android 中文教学视频 在这篇文章中,我们将讨论: 在 Kotlin 中如何使用 WorkManager...Worker 类 (Worker、ListenableWorker 和 RxWorker) 之外,还有唯一一个使用 Kotlin 协程实现的 Work 类——CoroutineWorker。...Result.retry() } else { Result.failure() } } } } 复制代码 然后您可以在测试中...现在您可以非常容易的对 Worker 类进行测试,并且 WorkManager 在 Kotlin 中的整体使用体验也非常棒。...如果您还没有在项目中使用 CoroutineWorker 以及 workmanager-runtime-ktx 中包含的其他扩展,强烈建议您在项目中使用它们。
中调用 1 StringUtil.toUri("https://droidyue.com"); 生成的 class 文件名为 1 ....代码中,可以这样调用 1 2 3 public static void testJvmNameOnMethod() { OnMethodSampleKt.isOK(""); } 但是,我们在Kotlin...编译器将isValid在字节码层面又替换成了isOK。...; OnPropertiesSampleKt.x(); } 在Kotlin中对应的调用 1 2 3 4 fun testJvmNameOnProperty() { x...= 1111 x } 和作用在方法上一样,其实现原理一致,具体如下面的反编译代码可见一斑。
接触过Kotlin之后,我们会利用其扩展方法特性创建很多便捷的方法来实现更好更快的编码。比如我们对于RxJava进行一些简单的扩展方法实现。...答案是,可以的,就是利用@file:JvmName和@file:JvmMultifileClass就可以实现。...Any> List.toObservable(): Observable> { return Observable.fromArray(this) } 修改后,就可以在Java...中完全使用RxUtil调用了。...内容推荐 如何研究Kotlin JvmName注解 kotlin编译器调校 Kotlin更多文章
在这篇文章里,我分享一个用 Jetpack Compose、Material3和 Kotlin 语言实现使用Jetpack Compose、M3和Kotlin开发轮播图和列表功能。...在首页的 HomeScreen 中使用了 LazyRow 来实现横向滚动的轮播图,还展示了如何使用 M3 的组件创建卡片样式的分类项,自定义颜色、样式和阴影效果。...轻松实现分组列表的标题部分,像音乐应用中的不同分类一样。...-2 在 SubscriptionScreen页面中展示了实现简单轮播图。...在MyScreen 页面,展示了如何实现带有点击事件的列表,在用户点击某个项目时弹出对话框(AlertDialog)。
在这篇文章里,我分享一个用 Jetpack Compose、Material3和 Kotlin 语言实现CURD列表App的案例。无论你有没有开发经验,相信这篇文章对你会非常有所帮助。...二、项目开发在本Demo中,实现了以下功能: • 使用 LazyColumn 展示CURD列表。 • 支持用户动态添加、编辑和删除列表项。...实现弹窗,用户可以在弹窗中输入新的条目,点击“增加”按钮后数据更新到CURD列表。...创建一个输入弹窗,用户可以通过该弹窗添加新的条目到列表中,LazyColumn 用于展示用户添加的所有列表项。...,使用 AlertDialog 实现了弹窗交互,让用户动态添加、编辑和删除条目。
; > 然后直接粘贴在 csdn 的 MarkDown 编辑器中(当然是代码块中!)...; > 文章保存发表后,发现直接复制博客代码内容粘贴在自己的 PHPStorm 中时; > 排查问题发现 “onclick” 这个单词中 “o” 会失效; > 解决方法也不难,就是重新打出这个单词呗...更奇葩的现象是,即便我在 MarkDown 编辑器中手动打出这个单词,保存发布后依然存在问题!...第二篇文章 ThinkPHP5.1+ 验证码功能实现 ?...推测 本人推测可能是这些单引号双引号对 js代码产生的影响 因为单纯 只有 “onclick” 这个词是没问题的哦 希望不是我操作出现的BUG,不然可就丢人咯,哈哈哈 … ?
市面上介绍使用Kotlin进行后端开发的图书和文章也比较少,袁康在大量实践的基础上,萌生了写一本书的想法,希望和更多的Java开发人员分享Kotlin在后端开发中的实践经验。...本文选自书中“Kotlin在常用中间件中的应用”一章,这一章主要介绍Kotlin在常用中间件中的应用,通过示例程序,将展示Kotlin集成Spring Boot、Redis、JPA、QueryDSL、MongoDB...读者可以掌握使用Kotlin操作常用中间件的技巧。 下面我们一起来学习了解下本章中“Kotlin集成Spring Boot”部分。...和用Java开发Spring Boot项目类似,Kotlin在main函数中启动应用,用GetMapping定义一个get接口,使用@RestController后就不用为每个方法添加@ResponseBody...本书专注于Kotlin在Spring Boot微服务开发中的实践,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中间件中的应用,以及其在微服务注册中心、微服务配置中心、微服务网关、Spring
前言 Kotlin协程底层是用线程实现的,是一个封装完善供开发者使用的线程框架。...Kotlin的一个协程可以理解为是运行在线程上的一个执行任务并且该任务可以在不同的线程间切换,一个线程可以同时运行多个协程。...从开发者角度来看:kotlin协程可以实现以同步的方式去编写异步执行的代码,解决线程切换回调的嵌套地狱。 协程挂起时不需要阻塞线程,几乎是无代价的。...CoroutineScope(Dispatchers.IO).launch {} 是在指定的 CoroutineScope 中启动一个协程,通常情况下应该手动创建 CoroutineScope 对象,并确保在合适的时机取消该...最常见的,网络请求在IO线程,而页面更新在主线程。 Kotlin给我们提供了一个顶层函数withContext用于改变协程的上下文并执行一段代码。
从Android的源码中能看到基于这样的不同重要性的理解而实现的一些交互机制,SDK中也有明白的提及,比如在ViewGroup的onInterceptTouchEvent方法中,假设在ACTION_DOWN...在Android中,onClick、onLongClick的触发是和ACTION_DOWN及ACTION_UP相关的,在时序上,假设我们在一个View中同一时候覆写了onClick、onLongClick...基本的逻辑在View.java中的onTouchEvent方法中实现的: case MotionEvent.ACTION_DOWN: mPrivateFlags |= PRESSED;...= null) { handled = mOnLongClickListener.onLongClick(View.this); 从实现中能够看到onClick()和onLongClick...()方法是由ACTION_DOWN和ACTION_UP事件捕捉后依据各种情况终于确定是否触发的,也就是说假设我们在一个Activity或者View中同一时候监听或者覆写了onClick(),onLongClick
内容为自定义view ---- 六种样式分析: 显示消息提示的对话框(例如:是否确认关闭) 简单列表对话框 单选列表对话框 多选列表对话框 自定义对标对话框 自定义View对话框 注:按钮的点击事件在...MainActivity 中声明 MainActivity的 XML 在文末给出 一、显示消息提示的对话框 效果: 实现方法: 建立 FirstService类 用于写静态方法 public class...(一)中类似,这里就不给出了了 ---- 三、单选列表对话框 具体调用方法: public static void simple(View scource ){ AlertDialog.Builder....show(); } 其他部分代码与 二 中相同,这里就不在给出 ---- 四、多选列表对话框 效果: 具体实现方法: 这里为了传送数据 判断用户选了哪些选项 setPositiveButton...一 中给出 这里不在给出 ---- 五、自定义列表项对话框 效果: 简单实现: public class FirstService extends MainActivity{ private
在Android中,AlertDialog可以为当前的界面上显示一个对话框,而且产生的对话框是在所有界面元素上面的,能够覆盖掉其余组件,所以AlertDialog一般是用于提示一些非常重要的信息或者警告内容...实现方法,在XML文件中新建一个按钮,在Java文件中添加单击事件响应 button1.setOnClickListener(new View.OnClickListener() { @Override...public void onClick(View v) { AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this...); } } }); builder.create().show(); } }); ---- 三、总结 在Android...中,如果需要使用 对话框 组件,来实现一定的功能,就需要用到 AlertDialog 。
Netty 服务端在收到客户端发来的消息后,能够做出相应的业务处理。在某些场景下,服务端也需要给客户端 App/网页发送消息。 二....Demo 的实现 3.1 Socket 服务端 启动 NettyServer: private fun startServer() { if (!...总结 借助 Kotlin 的特性以及 Netty 框架,我们在 Android 上也实现了一个 Socket 服务端。...在实际生产环境中,我们采用的消息格式可能是 json ,因为 json 更加灵活,通过解析 json 获取消息的内容。...参考资料: https://github.com/aLittleGreens/NettyDemo Netty 实现 一个端口同时接收 socket 和 webSocket 连接
6.6 弹出对话框 在 GUI 程序中,有时需要弹出对话框来提示一些信息。这些对话框比一个独立的屏幕简单,在 Android 中弹出式对话框不同于表示一个屏幕的活动,它通常用于简单的功能处理。...对话框的父类是 android.app.Dialog,通过构建类 android.app.AlertDialog 来实现弹出式对话框,可以使用AlertDialog.Builder 和不同的参数来构建对话框...代码实现的片断如下所示: return new AlertDialog.Builder(AlertDialogSamples.this) .setTitle(R.string.select_dialog...最后一个对话框是通过设置一个 View 来实现的,设置的内容在布局文件 alert_dialog_text_entry.xml中。...对话框的类为 android.app.Dialog,通过 android.app.AlertDialog.Builder 类来建立,在建立的过程中可以进行多项设置。
System.currentTimeMillis(); } } 运行结果: 本计算机的核数:12 655269092 单线程计算耗时:3350 ms 655269092 多线程计算耗时:425 ms 2.Kotlin...parallel().reduce { t: Int, u: Int -> t + u }.get() } 运行结果: 655149583 parallelSum Time:2911ms 看起来,Kotlin...使用Java 8 的 parallel Stream API,似乎没有明显的性能提升(猜测:中间有Java-Kotlin互转带来的性能损耗?)。...3.直接使用Kotlin的 List的API: package i import java.util.* /** * @author: Jack * 2020-05-06 16:03 */...numbers.stream().parallel().reduce { t: Int, u: Int -> t + u }.get() } 运行结果: 655344706 listSum Time:3235ms 4.使用Kotlin
但如果我们在弹窗里添加一个EditText输入框,判断如果输入框为空的时候弹提示而告诉用户输入框为空,请输入内容。 这种情况就需要保留AlertDialog让它不消失。...解决办法如下: 首先我们将PositiveButton的监听设置为null .setPositiveButton("确定", null) 然后我们拿到PositiveButton,并由我们自己来实现监听即可是实现...AlertDialog按钮不消失的需求 当我们在自己定义的监听里需要让AlertDialog消失时,调用alertdialog.cancle()即可 整体代码如下 //创建输入框...setNegativeButton("取消", null) .show(); //拿到按钮并判断是否是POSITIVEBUTTON,然后我们自己实现监听...() { @Override public void onClick(View v) { String input
另外,会发现构造方法是保护的,如果我们要创建AlertDialog的话,我们需要使用到该类中的一个静态内部类:public static class Builder,然后来调用AlertDialog里的相关方法...,来对AlertDialog进行定制,最后调用show()方法来显示我们的AlertDialog对话框!...好的,下面我们就来学习AlertDialog的基本用法,以及定制我们的AlertDialog!...地址 http://blog.csdn.net/xiangyong_1521/article/details/50528403 目录 实现效果 实现过程 主要代码 ---- 一.实现效果 ?...---- 二.实现过程 创建AlertDialog.Builder对象; 调用setIcon()来设置图标,的setTitle()或setCustomTitle()设置标题; 设置对话框的内容:setMessage
领取专属 10元无门槛券
手把手带您无忧上云