👌

ViewGroup内のとあるViewを検索し、True or Falseを返す拡張メソッド

2024/04/16に公開

あまりに忙しく投稿を失念していたのと、軽いネタ(というより備忘録的ななにか)があったので・・・。

とあるViewGroup内から、該当のViewが存在するかを返す拡張メソッドが必要になったので、検討してみたものです。

それが・・・、

import android.view.View
import android.view.ViewGroup
import androidx.core.view.children

fun ViewGroup.findAllViewByView(view: View?): Boolean {
    view?:return false
    if (indexOfChild(view) > -1) {
        return true
    }
    val viewGroupList = children.filter { it is ViewGroup  }.map { it as ViewGroup }
    if (viewGroupList.count() > 0) {
        return viewGroupList.map { it.findAllViewByView(view) }.reduce { acc, b -> acc || b }
    }
    return false
}

こんなの。

これがあれば、ViewGroup内の更にViewGroupを参照してくれるので、非常に大雑把に利用できます!
まあ、普通は利用する機会は無いと思いますが、とある事情で上記の処理を検討した次第です。

追伸、
findAllViewByView・・・ナンノコッチャ!?
ネーミングも勉強中です・・・。

Discussion