Refinement List
About this widget
RefinementList
is a filtering view that displays facets, and lets the user refine their search results by filtering on specific values.
To add a RefinementList
to your search experience, use these components:
Searcher
: TheSearcher
that handles your searches.FilterState
: The current state of the filters.FacetListViewModel
: The logic applied to the facets.FacetListView
: The view that will render facets.FacetListPresenter
: Optional. The presenter that controls the sorting and other settings of the facet list view.
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class MyActivity: AppCompatActivity() {
class MyFacetListViewHolder(view: View): FacetListViewHolder(view) {
override fun bind(facet: Facet, selected: Boolean, onClickListener: View.OnClickListener) {
// Bind your view
}
object Factory: FacetListViewHolder.Factory {
override fun createViewHolder(parent: ViewGroup): FacetListViewHolder {
// Inflate your layout
val view = View(parent.context)
return MyFacetListViewHolder(view)
}
}
}
val client = ClientSearch(
ApplicationID("YourApplicationID"),
APIKey("YourAPIKey")
)
val index = client.initIndex(IndexName("YourIndexName"))
val searcher = SearcherSingleIndex(index)
val filterState = FilterState()
val attribute = Attribute("facetName")
val viewModel = FacetListViewModel()
val presenter = FacetListPresenterImpl(listOf(FacetSortCriterion.CountDescending), limit = 5)
val connection = ConnectionHandler()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// You can use the default FacetListAdapter, or implement your own UI component that fulfill the FacetListView interface.
val view: FacetListView = FacetListAdapter(MyFacetListViewHolder.Factory)
connection += searcher.connectFilterState(filterState)
connection += viewModel.connectFilterState(filterState, attribute, FilterOperator.Or)
connection += viewModel.connectSearcher(searcher, attribute)
connection += viewModel.connectView(view, presenter)
searcher.searchAsync()
}
override fun onDestroy() {
super.onDestroy()
connection.disconnect()
searcher.cancel()
}
}
Parameters
searcher
|
type: Searcher
Required
The |
||
Copy
|
|||
filterState
|
type: FilterState
Required
The |
||
Copy
|
|||
facetListView
|
type: FacetListView
Required
The view that will render the facets. |
||
Copy
|
|||
attribute
|
type: Attribute
Required
The attribute to filter. |
||
Copy
|
|||
operator
|
type: FilterOperator
default: FilterOperator.And
Optional
Whether we apply an For example if we have color as attribute and an |
||
Copy
|
|||
items
|
type: List<Facet>
default: listOf()
Optional
If specified, the default facet values to display. |
||
Copy
|
|||
selectionMode
|
type: SelectionMode
default: Multiple
Optional
Whether the list can have |
||
Copy
|
|||
persistentSelection
|
type: Boolean
default: false
Optional
When true, the selection will be kept even if it does not match current results anymore. |
||
Copy
|
Presenter
sortBy
|
type: List<FacetSortCriterion>
default: listOf(FacetSortCriterion.CountDescending)
Optional
How to sort facets. Must be one or more of the following values:
|
||
Copy
|
|||
limit
|
type: Int
default: 10
Optional
The number of facet values to retrieve. |
||
Copy
|