Search code examples
androidkotlinsonarlint

SonarLint: Remove the unnecessary Boolean literal


I have set in a SearchView:

setOnQueryTextListener(object : SearchView.OnQueryTextListener {
    override fun onQueryTextSubmit(query: String) = false
    override fun onQueryTextChange(newText: String): Boolean {
        filterSet.apply { 
            clear()
            addAll(searchSet.filter {
                if (newText.isEmpty()) true
                else it.name.contains(newText, true) 
            }) 
        }; return false
    }
}

SonarLint says true (before else) is unnecessary, why? How else can it be done?


Solution

  • You don't need to have if and else in the filter, your code can be as below:

    // line to change

     if (newText.isEmpty()) true
     else it.name.contains(newText, true)
    

    // line to change

         setOnQueryTextListener(object : SearchView.OnQueryTextListener {
              override fun onQueryTextSubmit(query: String) = false
              override fun onQueryTextChange(newText: String): Boolean {
                   searchSet.filter { newText.isEmpty() || it.name.contains(newText, true) } 
                   return false
              }
          }