Stats
StatsConnector( searcher: HitsSearcher, responseSearch: ResponseSearch )
About this widget
Each search Response
contains various metadata that you might display in your search experience.
The following information is available as a part of the Response
:
hitsPerPage
: Number of hits per page.totalHitsCount
: Total number of hits.pagesCount
: Total number of pages.page
: Current page.processingTimeMS
: Processing time of the request (in ms).query
: Query text that produced these results.
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MyActivity : AppCompatActivity() {
val searcher = HitsSearcher(
applicationID = ApplicationID("YourApplicationID"),
apiKey = APIKey("YourSearchOnlyAPIKey"),
indexName = IndexName("YourIndexName")
)
val stats = StatsConnector(searcher)
val connection = ConnectionHandler(stats)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val statsView = StatsTextView(statsA)
connection += stats.connectView(statsView, StatsPresenterImpl())
searcher.searchAsync()
}
override fun onDestroy() {
super.onDestroy()
searcher.cancel()
connection.disconnect()
}
}
Low-level API
If you want to fully control the Stats components and connect them manually, use the following components:
Searcher
: TheSearcher
that handles your searches.StatsViewModel
: The logic applied to the stats.StatsView
: The view that renders the stats.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyActivity : AppCompatActivity() {
val searcher = HitsSearcher(
applicationID = ApplicationID("YourApplicationID"),
apiKey = APIKey("YourSearchOnlyAPIKey"),
indexName = IndexName("YourIndexName")
)
val statsViewModel = StatsViewModel()
val connection = ConnectionHandler()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val statsView = StatsTextView(statsA)
connection += statsViewModel.connectSearcher(searcher)
connection += statsViewModel.connectView(statsView)
searcher.searchAsync()
}
override fun onDestroy() {
super.onDestroy()
searcher.cancel()
connection.disconnect()
}
}
Compose UI
InstantSearch provides the StatsState
as a state model, which is an implementation of the StatsView
interface.
You need to connect StatsState
to the StatsConnector
or StatsViewModel
like any other StatsView
implementation.
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
class MyActivity : AppCompatActivity() {
val searcher = HitsSearcher(
applicationID = ApplicationID("YourApplicationID"),
apiKey = APIKey("YourSearchOnlyAPIKey"),
indexName = IndexName("YourIndexName")
)
val statsState = StatsTextState()
val stats = StatsConnector(searcher)
val connections = ConnectionHandler(stats)
init {
connections += stats.connectView(statsState, StatsPresenterImpl())
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyStats(statsState) // your own UI composable to display stats
}
searcher.searchAsync()
}
override fun onDestroy() {
super.onDestroy()
searcher.cancel()
connections.disconnect()
}
}
Parameters
searcher
|
type: HitsSearcher
Required
The |
responseSearch
|
type: ResponseSearch
Optional
The initial search response to render. |
View
view
|
Required
The view that renders the stats. |
||
presenter
|
type: StatsPresenter<T>
Required
The presenter that defines the way we want to display stats, taking as input a |
||
Copy
|