使用Kotlin创建动态Android TextWatcher

本文介绍了如何利用Kotlin的lambda表达式和可选参数简化Android中的TextWatcher实现,从而减少代码冗余,提高代码可读性。通过创建DynamicTextWatcher类,实现了TextWatcher的功能,并允许开发者仅提供必要的函数,而忽略其他空实现。此外,还探讨了Android-ktx库中类似的解决方案。
摘要由CSDN通过智能技术生成

Today there’s 1 Pull Request that attract my attention. This code is part of a simple calculator activity. It listen to a field to calculate the total nominal and shows it in a TextView.

今天有1个请求请求吸引了我的注意。 此代码是简单的计算器活动的一部分。 它侦听一个字段以计算总标称并将其显示在TextView中。

seratus_ribu.addTextChangedListener(object : TextWatcher {


                    override fun afterTextChanged(s: Editable) {}


                    override fun beforeTextChanged(
                        s: CharSequence,
                        start: Int,
                        count: Int,
                        after: Int
                    ) {
                    }


                    override fun onTextChanged(
                        s: CharSequence,
                        start: Int,
                        before: Int,
                        count: Int
                    ) {
                        val sumPaidInstallment = sumPaidInstallment()
                        val txtNominal =
                            "${DisplayHelper.formatCurrency(sumPaidInstallment)} / ${DisplayHelper.formatCurrency(
                                totalPaidInstallment
                            )}"


                        angsuran.text = txtNominal
                    }
                })

Repeat this code for 11 field and you got a large code with lot of empty space and empty implementation. With java, there’s nothing you can do. You just accept it. But with kotlin, code like this become more and more unacceptable.

对11个字段重复此代码,您将获得一个大型代码,其中包含大量空白空间和空的实现。 使用Java,您无能为力。 您只接受它。 但是使用kotlin,这样的代码变得越来越难以接受。

To fix it we can leverage lambda in kotlin. So I created a DynamicTextWatc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值