Skip to content
This repository was archived by the owner on May 24, 2022. It is now read-only.

Commit b00b733

Browse files
committed
show suggestions and hits in the same view
1 parent 945ce4a commit b00b733

File tree

2 files changed

+8
-30
lines changed

2 files changed

+8
-30
lines changed

guide/guides/src/main/kotlin/com/algolia/instantsearch/guides/querysuggestion/QuerySuggestionGuide.kt

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.algolia.search.helper.deserialize
2323
import com.algolia.search.model.APIKey
2424
import com.algolia.search.model.ApplicationID
2525
import com.algolia.search.model.IndexName
26+
import com.algolia.search.model.search.Query
2627
import io.ktor.client.features.logging.*
2728

2829
class QuerySuggestionGuide : AppCompatActivity() {
@@ -38,6 +39,7 @@ class QuerySuggestionGuide : AppCompatActivity() {
3839
)
3940
private val suggestionSearcher = multiSearcher.addHitsSearcher(
4041
indexName = IndexName("instantsearch_query_suggestions"),
42+
query = Query(hitsPerPage = 3)
4143
)
4244
private val searchBox = SearchBoxConnector(multiSearcher)
4345
private val connection = ConnectionHandler(searchBox)
@@ -55,28 +57,22 @@ class QuerySuggestionGuide : AppCompatActivity() {
5557

5658
// Setup hits
5759
val productAdapter = ProductAdapter()
58-
binding.products.configureRecyclerView(productAdapter)
60+
binding.products.configure(productAdapter)
5961
connection += productSearcher.connectHitsView(productAdapter) { it.hits.deserialize(Product.serializer()) }
6062

6163
// Setup suggestions
62-
val suggestionAdapter = SuggestionAdapter {
63-
searchBoxView.setText(it.query, true)
64-
}
65-
binding.suggestions.configureRecyclerView(suggestionAdapter)
64+
val suggestionAdapter = SuggestionAdapter { searchBoxView.setText(it.query, true) }
65+
binding.suggestions.configure(suggestionAdapter)
6666
connection += suggestionSearcher.connectHitsView(suggestionAdapter) {
67+
binding.suggestionsGroup.visibility = if (it.hits.isEmpty()) View.GONE else View.VISIBLE
6768
it.hits.deserialize(Suggestion.serializer())
6869
}
6970

70-
// Switch display depending search box focus
71-
searchBoxView.searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
72-
if (hasFocus) display(Display.Suggestions) else display(Display.Hits)
73-
}
74-
7571
// initial search
7672
multiSearcher.searchAsync()
7773
}
7874

79-
private fun RecyclerView.configureRecyclerView(recyclerViewAdapter: RecyclerView.Adapter<*>) {
75+
private fun RecyclerView.configure(recyclerViewAdapter: RecyclerView.Adapter<*>) {
8076
visibility = View.VISIBLE
8177
layoutManager = LinearLayoutManager(this@QuerySuggestionGuide)
8278
adapter = recyclerViewAdapter
@@ -89,15 +85,4 @@ class QuerySuggestionGuide : AppCompatActivity() {
8985
multiSearcher.cancel()
9086
connection.clear()
9187
}
92-
93-
private fun display(display: Display) {
94-
binding.suggestionsGroup.visibility = display.visibleIf(Display.Suggestions)
95-
binding.hitsGroup.visibility = display.visibleIf(Display.Hits)
96-
}
97-
98-
private enum class Display {
99-
Suggestions, Hits;
100-
101-
fun visibleIf(display: Display) = if (this == display) View.VISIBLE else View.GONE
102-
}
10388
}

guide/guides/src/main/res/layout/activity_query_suggestion.xml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
app:layout_constraintEnd_toEndOf="parent"
2424
app:layout_constraintStart_toStartOf="parent"
2525
app:layout_constraintTop_toTopOf="parent"
26-
app:queryHint="Search places" />
26+
app:queryHint="Search for products..." />
2727

2828
</androidx.appcompat.widget.Toolbar>
2929

@@ -83,11 +83,4 @@
8383
app:constraint_referenced_ids="titleSuggestions,suggestions"
8484
tools:visibility="visible" />
8585

86-
<androidx.constraintlayout.widget.Group
87-
android:id="@+id/hitsGroup"
88-
android:layout_width="wrap_content"
89-
android:layout_height="wrap_content"
90-
android:visibility="visible"
91-
app:constraint_referenced_ids="titleResults,products" />
92-
9386
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)