Merge pull request #3032 from Bnyro/master

Search history improvements
This commit is contained in:
Bnyro 2023-02-12 12:28:15 +01:00 committed by GitHub
commit 17b6d36b3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 67 deletions

View File

@ -1,35 +1,38 @@
package com.github.libretube.ui.adapters package com.github.libretube.ui.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.SearchhistoryRowBinding import com.github.libretube.databinding.SuggestionRowBinding
import com.github.libretube.db.DatabaseHolder.Database import com.github.libretube.db.DatabaseHolder.Database
import com.github.libretube.db.obj.SearchHistoryItem import com.github.libretube.db.obj.SearchHistoryItem
import com.github.libretube.extensions.query import com.github.libretube.extensions.query
import com.github.libretube.ui.viewholders.SearchHistoryViewHolder import com.github.libretube.ui.viewholders.SuggestionsViewHolder
class SearchHistoryAdapter( class SearchHistoryAdapter(
private var historyList: List<String>, private var historyList: List<String>,
private val searchView: SearchView private val searchView: SearchView
) : ) :
RecyclerView.Adapter<SearchHistoryViewHolder>() { RecyclerView.Adapter<SuggestionsViewHolder>() {
override fun getItemCount(): Int { override fun getItemCount(): Int {
return historyList.size return historyList.size
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchHistoryViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SuggestionsViewHolder {
val layoutInflater = LayoutInflater.from(parent.context) val layoutInflater = LayoutInflater.from(parent.context)
val binding = SearchhistoryRowBinding.inflate(layoutInflater, parent, false) val binding = SuggestionRowBinding.inflate(layoutInflater, parent, false)
return SearchHistoryViewHolder(binding) return SuggestionsViewHolder(binding)
} }
override fun onBindViewHolder(holder: SearchHistoryViewHolder, position: Int) { override fun onBindViewHolder(holder: SuggestionsViewHolder, position: Int) {
val historyQuery = historyList[position] val historyQuery = historyList[position]
holder.binding.apply { holder.binding.apply {
historyText.text = historyQuery suggestionText.text = historyQuery
deleteHistory.visibility = View.VISIBLE
deleteHistory.setOnClickListener { deleteHistory.setOnClickListener {
historyList -= historyQuery historyList -= historyQuery
@ -45,6 +48,9 @@ class SearchHistoryAdapter(
root.setOnClickListener { root.setOnClickListener {
searchView.setQuery(historyQuery, true) searchView.setQuery(historyQuery, true)
} }
arrow.setOnClickListener {
searchView.setQuery(historyQuery, false)
}
} }
} }
} }

View File

@ -4,26 +4,26 @@ import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.SearchsuggestionRowBinding import com.github.libretube.databinding.SuggestionRowBinding
import com.github.libretube.ui.viewholders.SearchSuggestionsViewHolder import com.github.libretube.ui.viewholders.SuggestionsViewHolder
class SearchSuggestionsAdapter( class SearchSuggestionsAdapter(
private var suggestionsList: List<String>, private var suggestionsList: List<String>,
private val searchView: SearchView private val searchView: SearchView
) : ) :
RecyclerView.Adapter<SearchSuggestionsViewHolder>() { RecyclerView.Adapter<SuggestionsViewHolder>() {
override fun getItemCount(): Int { override fun getItemCount(): Int {
return suggestionsList.size return suggestionsList.size
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchSuggestionsViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SuggestionsViewHolder {
val layoutInflater = LayoutInflater.from(parent.context) val layoutInflater = LayoutInflater.from(parent.context)
val binding = SearchsuggestionRowBinding.inflate(layoutInflater, parent, false) val binding = SuggestionRowBinding.inflate(layoutInflater, parent, false)
return SearchSuggestionsViewHolder(binding) return SuggestionsViewHolder(binding)
} }
override fun onBindViewHolder(holder: SearchSuggestionsViewHolder, position: Int) { override fun onBindViewHolder(holder: SuggestionsViewHolder, position: Int) {
val suggestion = suggestionsList[position] val suggestion = suggestionsList[position]
holder.binding.apply { holder.binding.apply {
suggestionText.text = suggestion suggestionText.text = suggestion

View File

@ -1,8 +0,0 @@
package com.github.libretube.ui.viewholders
import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.SearchsuggestionRowBinding
class SearchSuggestionsViewHolder(
val binding: SearchsuggestionRowBinding
) : RecyclerView.ViewHolder(binding.root)

View File

@ -1,8 +1,8 @@
package com.github.libretube.ui.viewholders package com.github.libretube.ui.viewholders
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.SearchhistoryRowBinding import com.github.libretube.databinding.SuggestionRowBinding
class SearchHistoryViewHolder( class SuggestionsViewHolder(
val binding: SearchhistoryRowBinding val binding: SuggestionRowBinding
) : RecyclerView.ViewHolder(binding.root) ) : RecyclerView.ViewHolder(binding.root)

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="?android:attr/selectableItemBackground"
android:paddingHorizontal="16dp"
android:gravity="center_vertical"
android:paddingVertical="8dp"
android:layout_height="wrap_content">
<com.github.libretube.ui.views.DrawableTextView
android:id="@+id/history_text"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
android:drawablePadding="15dp"
android:layout_marginEnd="10dp"
app:drawableStartCompat="@drawable/ic_history"
tools:text="Suggestion item" />
<ImageView
android:id="@+id/delete_history"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="5dp"
android:src="@drawable/ic_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/roundedImageViewRounded" />
</LinearLayout>

View File

@ -3,24 +3,37 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal" android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:paddingHorizontal="16dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingVertical="8dp" android:orientation="horizontal"
android:layout_height="wrap_content"> android:paddingHorizontal="16dp"
android:paddingVertical="8dp">
<com.github.libretube.ui.views.DrawableTextView <com.github.libretube.ui.views.DrawableTextView
android:id="@+id/suggestion_text" android:id="@+id/suggestion_text"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAlignment="viewStart"
android:drawablePadding="15dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:layout_weight="1"
android:drawablePadding="15dp"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_search" app:drawableStartCompat="@drawable/ic_search"
tools:text="Suggestion item" /> tools:text="Suggestion item" />
<ImageView
android:id="@+id/delete_history"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="5dp"
android:src="@drawable/ic_close"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/roundedImageViewRounded" />
<ImageView <ImageView
android:id="@+id/arrow" android:id="@+id/arrow"
android:layout_width="wrap_content" android:layout_width="wrap_content"