API Reference / Android Widgets / Stats
Widget signature
StatsConnector(
  searcher: SearcherSingleIndex,
  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
23
class MyActivity : AppCompatActivity() {
    val client = ClientSearch(
        ApplicationID("YourApplicationID"),
        APIKey("YourAPIKey")
    )
    val index = client.initIndex(IndexName("YourIndexName"))
    val searcher = SearcherSingleIndex(index)
    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: The Searcher 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
24
class MyActivity : AppCompatActivity() {
    val client = ClientSearch(
        ApplicationID("YourApplicationID"),
        APIKey("YourAPIKey")
    )
    val index = client.initIndex(IndexName("YourIndexName"))
    val searcher = SearcherSingleIndex(index)
    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()
    }
}

Parameters

searcher
type: SearcherSingleIndex
Required

The Searcher that handles your searches.

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 Response and returning a T.

1
2
3
val view = StatsTextViewSpanned(statsB)
val presenter: StatsPresenter<String> = StatsPresenterImpl() // or your own `StatsPresenter` implementation
statsConnector.connectView(view, presenter)

Did you find this page helpful?