composeSearchableDropDown 2.3.2 indexed Enhances dropdown menus with search functionality, allowing dynamic filtering of list items. Supports easy customization of placeholders, default selections, and callback handling for item selection.
Bring this to kpkg
This library is indexed from the KMP ecosystem and already resolves through kpkg.dev's Maven Central proxy. Maintainers can verify the namespace and publish future versions to kpkg for free hosting, real download stats, and signed-provenance pages.
Publishing coming soonMetadata
Owner the-best-is-best
Stars 0
Used by —
Health —
License —
Latest 2.3.2
Repository github.com/the-best-is-best/composeSearchableDropDown
Updated 2026-01-20 Readme Changelog Compose Searchable Dropdown
Compose Searchable Dropdown is a Jetpack Compose library for Android that provides a dropdown with a search bar.
Download
Compose Searchable Dropdown is available on mavenCentral().
implementation("io.github.the-best-is-best:ComposeSearchableDropdown:2.3.0" )
v 2.2.0
upgrade kotlin version to 2.1.20 and compose to 1.8.0
support multi-selection
v 2.0.5
fix jvm not implementation and need change gradle.properties check if add this
kotlin.native.cacheKind = none
compose.kotlin.native.manageCacheKind = false
v 2.0.2
support compose and kotlin multiplatform
v 2.0.1
The searchIn parameter can now be null (if null the search bar will be hidden)
how to use v 2
selectedItemsState.clear()
How to use v < 2
listOfItems add your list data
placeholder add your placeholder for text field
searchPlaceHolder add your placeholder for search field
defaultItem add your default item
onDropDownItemSelected add your callback when item selected and receive item selected
dropdownItem add your item view like it.name or any thing will display in search dropdown
selectedOptionTextDisplay add your item view like it.name or any thing will display in text field
searchIn add your item like it.name or any thing will search in itdata class ExampleData (
val id: Int ,
val name: String
)
private val data = listOf(
ExampleData(1 , "First" ),
ExampleData(2 , "Second" ),
ExampleData(3 , "Third" ),
ExampleData(4 , "Fourth" ),
ExampleData(5 , "Fifth" ),
)
val selectedItemsState = rememberDropdownStates<ExampleData>(value = data [2 ])
Column{
SearchableDropDown(
listOfItems = data ,
state = selectedItemsState,
placeholder = {
Text(text = "اختار" )
},
searchPlaceHolder = {
Text(text = "بحث" )
},
onDropDownItemSelected = {
Log.d("get v" , it.name)
},
dropdownItem = {
Text("${it.id} - ${it.name} " , fontSize = 20. sp)
},
selectedOptionTextDisplay = {it.name},
searchIn = {
it.name
}
)
}
@Composable
fun MultiSelectExample () {
data class ExampleData (
val id: Int ,
val name: String
)
val data = List(1000 ) { index ->
ExampleData(index + 1 , "Item ${index + 1 } " )
}
val multiState = rememberMultiDropdownState<ExampleData>()
MaterialTheme(
colorScheme = lightColorScheme()
) {
Column(
modifier = Modifier.fillMaxSize().padding(16. dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
MultiSearchableDropDown(
listOfItems = data ,
state = multiState,
placeholder = { Text("اختر عدة عناصر" ) },
searchPlaceHolder = { Text("بحث..." ) },
showClearButton = true ,
openedIconColor = Color.Blue,
closedIconColor = Color.Gray,
onSelectionChanged = {
println("Selected Items: ${it.map { it.name } }" )
},
selectedOptionTextDisplay = { selectedSet ->
if (selectedSet.isEmpty()) "لم يتم الاختيار"
else selectedSet.joinToString(", " ) { it.name }
},
dropdownItem = { item, isSelected ->
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth()
) {
Icon(
imageVector = if (isSelected) Icons.Outlined.CheckBox else Icons.Outlined.CheckBoxOutlineBlank,
contentDescription = null ,
tint = if (isSelected) Color.Green else Color.Gray
)
Spacer(modifier = Modifier.width(8. dp))
Text(text = "${item.id} - ${item.name} " , fontSize = 18. sp)
}
},
searchIn = { it.name }
)
}
}
}
data class ExampleData (
val id: Int ,
val name: String
)
private val data = listOf(
ExampleData(1 , "First" ),
ExampleData(2 , "Second" ),
ExampleData(3 , "Third" ),
ExampleData(4 , "Fourth" ),
ExampleData(5 , "Fifth" ),
)
SearchableDropDown(
listOfItems = data ,
placeholder = {
Text(text = "Select an item" )
},
searchPlaceHolder = {
Text(text = "Search an item" )
},
defaultItem = data [2 ],
onDropDownItemSelected = {
Log.d("get v" , it.name)
},
dropdownItem = {
Text("${it.id} - ${it.name} " )
},
selectedOptionTextDisplay = {it.name},
searchIn = {it.name}
)
Related libraries Surfaced from shared tags and platforms — no rankings paid for.
JetLime ★ 605
pushpalroy Highly customizable UI library for creating vertical and horizontal timeline views. Supports extended events, various alignment options, custom styles, animations, and dynamic content updates in a timeline format. Shared: ui, compose, android-ui JetCo ★ 375
developerchunk Ready-to-use, customizable Compose UI components — charts, cards, steppers, controls — offering polished visuals, interactive behaviors, performance optimizations, and easy integration into declarative UI projects. Shared: ui, compose, android-ui AutoLinkText ★ 89
Calvin-LL Enhances text by making links, emails, and phone numbers clickable. Allows custom matchers, customizable styling, and click listeners. Supports various platforms and offers easy integration and usage examples. Shared: ui, compose, android-ui ComposeDialogs ★ 91
MFlisar Enhances user interfaces with customizable dialogs, offering flexible configurations and seamless integration for simplified dialog management and user interaction. Shared: ui, compose, android-ui FlexiUI ★ 139
BetterAndroid Flexible UI component library offering practical and reusable elements, inspired by Material Design but independent of its components. Facilitates multi-platform development with decoupled, easy-to-integrate design principles. Shared: ui, compose, android-ui compose-exploded-layers ★ 112
pingpongboss Interactive 3D exploded-view effect for UI layers — animate collapsed/exploded states, draggable rotation, adjustable spread, axis and easing, integrates with any composable layout. Shared: ui, compose, android-ui