mirror of
https://github.com/mediathekview/zapp.git
synced 2024-09-20 04:12:14 +02:00
Share search query in shared view model
This commit is contained in:
parent
e62415ec16
commit
a57d4c3040
@ -14,6 +14,7 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDestination
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
@ -25,10 +26,13 @@ import com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_
|
||||
import com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
|
||||
import com.google.android.material.search.SearchView
|
||||
import de.christinecoenen.code.zapp.R
|
||||
import de.christinecoenen.code.zapp.app.search.SearchViewModel
|
||||
import de.christinecoenen.code.zapp.app.settings.repository.SettingsRepository
|
||||
import de.christinecoenen.code.zapp.databinding.ActivityMainBinding
|
||||
import de.christinecoenen.code.zapp.utils.system.SystemUiHelper
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
|
||||
|
||||
class MainActivity : AppCompatActivity(), MenuProvider {
|
||||
|
||||
@ -37,6 +41,8 @@ class MainActivity : AppCompatActivity(), MenuProvider {
|
||||
|
||||
private val settingsRepository: SettingsRepository by inject()
|
||||
|
||||
private val searchViewModel: SearchViewModel by viewModel()
|
||||
|
||||
private lateinit var navController: NavController
|
||||
private lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
@ -86,6 +92,9 @@ class MainActivity : AppCompatActivity(), MenuProvider {
|
||||
onBackPressedDispatcher.addCallback(this, onSearchViewPressedCallback)
|
||||
|
||||
binding.searchView.addTransitionListener(searchViewTransistionListener)
|
||||
binding.searchView.editText.addTextChangedListener {
|
||||
searchViewModel.setSearchQuery(it.toString())
|
||||
}
|
||||
|
||||
addMenuProvider(this)
|
||||
|
||||
|
@ -5,15 +5,18 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import de.christinecoenen.code.zapp.databinding.SearchFragmentBinding
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.androidx.viewmodel.ext.android.activityViewModel
|
||||
|
||||
class SearchFragment : Fragment() {
|
||||
|
||||
private var _binding: SearchFragmentBinding? = null
|
||||
private val binding: SearchFragmentBinding get() = _binding!!
|
||||
|
||||
private val viewModel: SearchViewModel by viewModel()
|
||||
private val viewModel: SearchViewModel by activityViewModel()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
@ -21,6 +24,12 @@ class SearchFragment : Fragment() {
|
||||
): View {
|
||||
_binding = SearchFragmentBinding.inflate(inflater, container, false)
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
viewModel.searchQuery.collectLatest { query ->
|
||||
binding.test.text = query
|
||||
}
|
||||
}
|
||||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,15 @@
|
||||
package de.christinecoenen.code.zapp.app.search
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
|
||||
class SearchViewModel : ViewModel() {
|
||||
// TODO: Implement the ViewModel
|
||||
}
|
||||
|
||||
private val _searchQuery = MutableStateFlow("")
|
||||
val searchQuery = _searchQuery.asStateFlow()
|
||||
|
||||
fun setSearchQuery(query: String?) {
|
||||
_searchQuery.tryEmit(query ?: "")
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
tools:context=".app.search.SearchFragment">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/test"
|
||||
style="@style/TextAppearance.AppCompat.Display4"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
Loading…
Reference in New Issue
Block a user