Add click listener to "View all" button
This commit is contained in:
parent
30587099de
commit
1602250415
3 changed files with 26 additions and 5 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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) {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue