Hello i want to implement search on nested list in...
# android
k
Hello i want to implement search on nested list in my android project by kotlin... i have written this code
Copy code
listItems.forEach { widgetData->
    if(widgetData.title.contains(keyword, true)){
        searchedList.add(widgetData)
    }else{
        val filteredWidgets = item.widgets.filter { widget ->
            widget.title.contains(keyword, true)
        }
        if (filteredWidgets.isNotEmpty()) {
            val newItem = WidgetData(
                id = widgetData.id,
                title = widgetData.title,
                isFree = widgetData.isFree,
                theme = widgetData.theme,
                thumbnail = widgetData.thumbnail,
                widgets = filteredWidgets
            )
            searchedList.add(newItem)
        }
    }
}
here is my data classes
Copy code
data class WidgetData(
    val id: Int,
    val isFree: Boolean,
    val theme: Any,
    val thumbnail: String,
    val title: String,
    var widgets: List<Widget>
)
data class Widget(
    val image: String,
    val title: String,
    val type: String
)
i am sure there will be a better option in kotlin to write this, i am searching for that..
e
(not android-related) one way to do it is
Copy code
listItems.mapNotNull { item ->
    item.takeIf {
        it.title.contains(keyword, ignoreCase = true)
    } ?: item.widgets.filter {
        it.title.contains(keyword, ignoreCase = true)
    }.ifEmpty { null }?.let { item.copy(widgets = it) }
}
k
Thanks @ephemient
261 Views