Merge pull request #3053 from Isira-Seneviratne/Search_binding

Use view binding extensions in the search fragments.
This commit is contained in:
Bnyro 2023-02-13 15:44:02 +01:00 committed by GitHub
commit 582ab70bd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 45 deletions

View File

@ -2,12 +2,13 @@ package com.github.libretube.ui.fragments
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import by.kirich1409.viewbindingdelegate.viewBinding
import com.github.libretube.R
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.databinding.FragmentSearchBinding import com.github.libretube.databinding.FragmentSearchBinding
import com.github.libretube.db.DatabaseHolder.Database import com.github.libretube.db.DatabaseHolder.Database
@ -16,12 +17,10 @@ import com.github.libretube.extensions.awaitQuery
import com.github.libretube.ui.activities.MainActivity import com.github.libretube.ui.activities.MainActivity
import com.github.libretube.ui.adapters.SearchHistoryAdapter import com.github.libretube.ui.adapters.SearchHistoryAdapter
import com.github.libretube.ui.adapters.SearchSuggestionsAdapter import com.github.libretube.ui.adapters.SearchSuggestionsAdapter
import com.github.libretube.ui.base.BaseFragment
import com.github.libretube.ui.models.SearchViewModel import com.github.libretube.ui.models.SearchViewModel
class SearchFragment : BaseFragment() { class SearchFragment : Fragment(R.layout.fragment_search) {
private var _binding: FragmentSearchBinding? = null private val binding by viewBinding(FragmentSearchBinding::bind)
private val binding get() = _binding!!
private val viewModel: SearchViewModel by activityViewModels() private val viewModel: SearchViewModel by activityViewModels()
@ -32,15 +31,6 @@ class SearchFragment : BaseFragment() {
query = arguments?.getString("query") query = arguments?.getString("query")
} }
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentSearchBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -75,15 +65,12 @@ class SearchFragment : BaseFragment() {
return@launchWhenCreated return@launchWhenCreated
} }
// only load the suggestions if the input field didn't get cleared yet // only load the suggestions if the input field didn't get cleared yet
val suggestionsAdapter = val suggestionsAdapter = SearchSuggestionsAdapter(
SearchSuggestionsAdapter( response.reversed(),
response.reversed(), (activity as MainActivity).searchView
(activity as MainActivity).searchView )
) if (isAdded && viewModel.searchQuery.value != "") {
runOnUiThread { binding.suggestionsRecycler.adapter = suggestionsAdapter
if (viewModel.searchQuery.value != "") {
binding.suggestionsRecycler.adapter = suggestionsAdapter
}
} }
} }
} }

View File

@ -2,12 +2,12 @@ package com.github.libretube.ui.fragments
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import by.kirich1409.viewbindingdelegate.viewBinding
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.PreferenceKeys
@ -18,15 +18,13 @@ import com.github.libretube.extensions.TAG
import com.github.libretube.extensions.hideKeyboard import com.github.libretube.extensions.hideKeyboard
import com.github.libretube.helpers.PreferenceHelper import com.github.libretube.helpers.PreferenceHelper
import com.github.libretube.ui.adapters.SearchAdapter import com.github.libretube.ui.adapters.SearchAdapter
import com.github.libretube.ui.base.BaseFragment
import java.io.IOException import java.io.IOException
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import retrofit2.HttpException import retrofit2.HttpException
class SearchResultFragment : BaseFragment() { class SearchResultFragment : Fragment(R.layout.fragment_search_result) {
private var _binding: FragmentSearchResultBinding? = null private val binding by viewBinding(FragmentSearchResultBinding::bind)
private val binding get() = _binding!!
private var nextPage: String? = null private var nextPage: String? = null
private var query: String = "" private var query: String = ""
@ -39,15 +37,6 @@ class SearchResultFragment : BaseFragment() {
query = arguments?.getString("query").toString() query = arguments?.getString("query").toString()
} }
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentSearchResultBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -77,7 +66,7 @@ class SearchResultFragment : BaseFragment() {
fetchSearch() fetchSearch()
binding.searchRecycler.viewTreeObserver.addOnScrollChangedListener { binding.searchRecycler.viewTreeObserver.addOnScrollChangedListener {
if (_binding?.searchRecycler?.canScrollVertically(1) == false && if (isAdded && !binding.searchRecycler.canScrollVertically(1) &&
nextPage != null nextPage != null
) { ) {
fetchNextSearchItems() fetchNextSearchItems()
@ -85,11 +74,6 @@ class SearchResultFragment : BaseFragment() {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun fetchSearch() { private fun fetchSearch() {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
view?.let { context?.hideKeyboard(it) } view?.let { context?.hideKeyboard(it) }