是否有一种方法可以避免在突变自身时避免多个代码



这是用kotlin编写的,但我敢肯定在Java中几乎相同。

something.setOnClickListener {
            availableReportRecycler.isActivated = !availableReportRecycler.isActivated
            if (availableReportRecycler.isActivated) availableReportRecycler.visibility = View.VISIBLE
            else availableReportRecycler.visibility = View.GONE
        }

kotlin/java中有没有办法简化此代码?

我觉得它应该能够将其简化为(伪代码(之类的东西:

something.setOnClickListener {
   availableReportRecycler.visibility = 
      {availableReportRecycler.isActivated = !self}  ? View.VISIBLE:View.GONE
}

在没有在网上找到任何相关的东西后,我很强迫各种组合,但仍然无法正常工作。

你能做到多么美丽?最好的答案获得了虚拟啤酒和"我好的"贴纸!

所呈现的代码的主要部分远非如此漂亮,这是长availableReportRecycler名称的重复。将Kotlin标准库中的范围范围with与导入和if表达式组合,使我们可以使此代码更加干净,而无需使其更难理解:

something.setOnClickListener {
    with (availableReportRecycler) {
        isActivated = !isActivated
        visibility = if (isActivated) VISIBLE else GONE
    }
}

您可以像also一样应用进一步的范围范围,以避免在第二个语句中重复isActivated,但是,对于我的口味,它不会使此特定代码更好。

我认为罗马·伊丽莎白(Roman Elizarov(有一个很好的方法。但是,如果您想链接激活和可见性您可能需要考虑这样的setActivated

class AvailableReportRecycler(context: Context) : View(context) {
    override fun setActivated(value : Boolean) {
        super.setActivated(value)
        visibility = if(value) View.VISIBLE else View.GONE
    }
}

这样,您将可见性链接到激活状态。您可以这样称呼它:

something.setOnClickListener {
     availableReportRecycler.isActivated = !availableReportRecycler.isActivated
}

对象 - 对象 - 不是很漂亮吗?:(

最新更新