Stats
StatsConnector( searcher: HitsSearcher, responseSearch: ResponseSearch )
About this widget # A
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 # A
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("AJ0P3S7DWQ"),
apiKey = APIKey("90dfaaf5755e694f341fe68f6e41a6d4"),
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("AJ0P3S7DWQ"),
apiKey = APIKey("90dfaaf5755e694f341fe68f6e41a6d4"),
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("AJ0P3S7DWQ"),
apiKey = APIKey("90dfaaf5755e694f341fe68f6e41a6d4"),
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 # A
View # A
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
|