Add click listener to "View all" button

This commit is contained in:
Jarne Demeulemeester 2021-06-20 15:02:58 +02:00
parent 30587099de
commit 1602250415
No known key found for this signature in database
GPG key ID: 60884A0C1EBA43E5
3 changed files with 26 additions and 5 deletions

View file

@ -8,13 +8,18 @@ import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.ViewItemBinding import dev.jdtech.jellyfin.databinding.ViewItemBinding
import dev.jdtech.jellyfin.models.View import dev.jdtech.jellyfin.models.View
class ViewListAdapter : ListAdapter<View, ViewListAdapter.ViewViewHolder>(DiffCallback) { class ViewListAdapter(
private val onClickListener: OnClickListener
) : ListAdapter<View, ViewListAdapter.ViewViewHolder>(DiffCallback) {
class ViewViewHolder(private var binding: ViewItemBinding) : RecyclerView.ViewHolder(binding.root) { class ViewViewHolder(private var binding: ViewItemBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(view: View) { fun bind(view: View, onClickListener: OnClickListener) {
binding.view = view binding.view = view
// TODO: Change to string placeholder // TODO: Change to string placeholder
binding.viewName.text = "Latest ${view.name}" binding.viewName.text = "Latest ${view.name}"
binding.itemsRecyclerView.adapter = ViewItemListAdapter(fixedWidth = true) binding.itemsRecyclerView.adapter = ViewItemListAdapter(fixedWidth = true)
binding.viewAll.setOnClickListener {
onClickListener.onClick(view)
}
binding.executePendingBindings() binding.executePendingBindings()
} }
} }
@ -35,6 +40,10 @@ class ViewListAdapter : ListAdapter<View, ViewListAdapter.ViewViewHolder>(DiffCa
override fun onBindViewHolder(holder: ViewViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewViewHolder, position: Int) {
val view = getItem(position) val view = getItem(position)
holder.bind(view) holder.bind(view, onClickListener)
}
class OnClickListener(val clickListener: (view: View) -> Unit) {
fun onClick(view: View) = clickListener(view)
} }
} }

View file

@ -6,6 +6,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import dev.jdtech.jellyfin.adapters.ViewListAdapter import dev.jdtech.jellyfin.adapters.ViewListAdapter
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
import dev.jdtech.jellyfin.viewmodels.HomeViewModel import dev.jdtech.jellyfin.viewmodels.HomeViewModel
@ -21,7 +22,14 @@ class HomeFragment : Fragment() {
binding.lifecycleOwner = this binding.lifecycleOwner = this
binding.viewModel = viewModel binding.viewModel = viewModel
binding.viewsRecyclerView.adapter = ViewListAdapter() binding.viewsRecyclerView.adapter = ViewListAdapter(ViewListAdapter.OnClickListener {
findNavController().navigate(
HomeFragmentDirections.actionNavigationHomeToLibraryFragment(
it.id,
it.name
)
)
})
viewModel.finishedLoading.observe(viewLifecycleOwner, { viewModel.finishedLoading.observe(viewLifecycleOwner, {
if (it) { if (it) {

View file

@ -9,7 +9,11 @@
android:id="@+id/navigation_home" android:id="@+id/navigation_home"
android:name="dev.jdtech.jellyfin.fragments.HomeFragment" android:name="dev.jdtech.jellyfin.fragments.HomeFragment"
android:label="@string/title_home" android:label="@string/title_home"
tools:layout="@layout/fragment_home" /> tools:layout="@layout/fragment_home" >
<action
android:id="@+id/action_navigation_home_to_libraryFragment"
app:destination="@id/libraryFragment" />
</fragment>
<fragment <fragment
android:id="@+id/navigation_media" android:id="@+id/navigation_media"