Added custom recycler divider, further changes to ViewHolders

This commit is contained in:
Arty Bishop committed 2020-10-17 14:52:19 +01:00
1 parent 1c6d22ccf9
commit 69b3e4f70b
14 files changed
+98 -89

No files matched your search

@@ -4,11 +4,9 @@ import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.findNavController
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.SharedViewModel
@@ -16,6 +14,7 @@ import com.rtbishop.look4sat.data.SatEntry
import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
import com.rtbishop.look4sat.utility.RecyclerDivider
import com.rtbishop.look4sat.utility.Utilities.snack
import dagger.hilt.android.AndroidEntryPoint
@@ -23,9 +22,9 @@ import dagger.hilt.android.AndroidEntryPoint
class EntriesFragment : Fragment(R.layout.fragment_entries) {
private lateinit var binding: FragmentEntriesBinding
private lateinit var entriesAdapter: EntriesAdapter
private val viewModel: SharedViewModel by activityViewModels()
private val pickFileReqCode = 100
private val entriesAdapter = EntriesAdapter()
private var tleSources = listOf<TleSource>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -36,17 +35,13 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
}
private fun setupComponents() {
entriesAdapter = EntriesAdapter()
binding.apply {
entriesRecycler.apply {
val linearLayoutMgr = LinearLayoutManager(requireContext())
val divider = DividerItemDecoration(requireContext(), linearLayoutMgr.orientation)
val drawable = ResourcesCompat
.getDrawable(resources, R.drawable.rec_entries_divider, requireActivity().theme)
drawable?.let { divider.setDrawable(it) }
layoutManager = linearLayoutMgr
adapter = entriesAdapter
addItemDecoration(divider)
setHasFixedSize(true)
adapter = entriesAdapter
layoutManager = LinearLayoutManager(requireContext())
addItemDecoration(RecyclerDivider(R.drawable.rec_divider_light))
}
importWeb.setOnClickListener { showImportFromWebDialog() }
importFile.setOnClickListener { showImportFromFileDialog() }
@@ -22,10 +22,8 @@ package com.rtbishop.look4sat.ui.fragments
import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R
@@ -35,6 +33,7 @@ import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
import com.rtbishop.look4sat.ui.adapters.PassesAdapter
import com.rtbishop.look4sat.utility.PrefsManager
import com.rtbishop.look4sat.utility.RecyclerDivider
import com.rtbishop.look4sat.utility.Utilities
import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator
import dagger.hilt.android.AndroidEntryPoint
@@ -78,17 +77,12 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
passesAdapter = PassesAdapter(requireContext(), prefsManager.shouldUseUTC())
binding.apply {
passesRecycler.apply {
val linearLayoutMgr = LinearLayoutManager(requireContext())
val divider = DividerItemDecoration(requireContext(), linearLayoutMgr.orientation)
val drawable = ResourcesCompat
.getDrawable(resources, R.drawable.rec_passes_divider, requireActivity().theme)
drawable?.let { divider.setDrawable(it) }
layoutManager = linearLayoutMgr
setHasFixedSize(true)
adapter = passesAdapter
isVerticalScrollBarEnabled = false
layoutManager = LinearLayoutManager(context)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
addItemDecoration(divider)
setHasFixedSize(true)
addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark))
}
animator = passesFab.getRotationAnimator()
passesFab.setOnClickListener {
@@ -0,0 +1,26 @@
package com.rtbishop.look4sat.utility
import android.graphics.Canvas
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
class RecyclerDivider(private val resId: Int) : RecyclerView.ItemDecoration() {
override fun onDrawOver(c: Canvas, parent: RecyclerView) {
val divider = ContextCompat.getDrawable(parent.context, resId)!!
val left = parent.paddingLeft
val right = parent.width - parent.paddingRight
parent.adapter?.itemCount?.let { childCount ->
for (i in 0 until childCount) {
if (i == (childCount - 1)) continue
parent.getChildAt(i)?.let {
val params = it.layoutParams as RecyclerView.LayoutParams
val top = it.bottom + params.bottomMargin
val bottom = top + divider.intrinsicHeight
divider.setBounds(left, top, right, bottom)
divider.draw(c)
}
}
}
}
}