FilterList.Facet is a filtering view that displays any kind of facet filters and lets users refine their search results by selecting them.Compared to the RefinementList,
which takes its values from the search response facets, this widget displays facet 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 groupColor = groupAnd(color) val facetFilters = listOf( Filter.Facet(color, "red"), Filter.Facet(color, "green"), Filter.Facet(color, "blue"), Filter.Facet(color, "yellow"), Filter.Facet(color, "black") ) val filterListState = FilterListState<Filter.Facet>() val filterListConnector = FilterListConnector.Facet( filters = facetFilters, filterState = filterState, selectionMode = SelectionMode.Single, groupID = groupColor ) val connections = ConnectionHandler(filterListConnector) init { connections += searcher.connectFilterState(filterState) connections += filterListConnector.connectView(filterListState) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { filterListState.items.forEach { selectableFacet -> FilterRow( // your own UI composable to display `SelectableItem<Filter.Facet>` selectableFilter = selectableFacet, onClick = { filterListState.onSelection?.invoke(it) } ) } } searcher.searchAsync() } override fun onDestroy() { super.onDestroy() connections.disconnect() searcher.cancel() }}