FilterList is a filtering view that displays any kind of filters,
and lets users refine the search results by selecting them.Compared to the RefinementList,
which takes its values from the search response ,
this widget displays filters that you add yourself.
InstantSearch provides the FilterListState as a state model,
which is an implementation of the FilterListView interface.
You need to connect FilterListState to the FilterListConnector or FilterListViewModel like any other FilterListView implementation.
Kotlin
import com.algolia.instantsearch.filter.Filterclass MyActivity: AppCompatActivity() { val searcher = HitsSearcher( applicationID = "YourApplicationID", apiKey = "YourSearchOnlyAPIKey", indexName = "YourIndexName" ) val filterState = FilterState() val color = "color" val price = "price" val filters = listOf( Filter.Numeric(price, 5..10), Filter.Tag("coupon"), Filter.Facet(color, "red"), Filter.Facet(color, "black"), Filter.Numeric(price, NumericOperator.Greater, 100) ) val groupAll = groupAnd(all) val filterListState = FilterListState<Filter>() val filterList = FilterListConnector.All( filters = filters, filterState = filterState, groupID = groupAll ) val connections = ConnectionHandler(filterList) init { connections += searcher.connectFilterState(filterState) connections += filterList.connectView(filterListState) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { filterListState.items.forEach { selectableFacet -> FilterRow( // your own UI composable to display `SelectableItem<Filter>` selectableFilter = selectableFacet, onClick = { filterListState.onSelection?.invoke(it) } ) } } searcher.searchAsync() } override fun onDestroy() { super.onDestroy() connections.disconnect() searcher.cancel() }}