From 27b1da11743dc8384d5a9205faf6a7af7b415b48 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sun, 16 Feb 2020 18:40:00 +0000 Subject: [PATCH] Fixed an NPE in the PolarViewFragment --- .../com/rtbishop/look4sat/MainViewModel.kt | 2 +- .../rtbishop/look4sat/ui/MapViewFragment.kt | 2 +- .../rtbishop/look4sat/ui/PassListFragment.kt | 2 +- .../rtbishop/look4sat/ui/PolarViewFragment.kt | 22 +++++++++++++------ .../look4sat/ui/adapters/SatPassAdapter.kt | 16 +++++++++----- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt index 18bb274b..5d723c1d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt @@ -65,7 +65,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { val debugMessage: LiveData = _debugMessage private val _satPassList = MutableLiveData>() - val passSatList: LiveData> = _satPassList + val satPassList: LiveData> = _satPassList private val _gsp = MutableLiveData() val gsp: LiveData = _gsp diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt index 97aa860d..8dc93fc2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt @@ -96,7 +96,7 @@ class MapViewFragment : Fragment() { private fun setupComponents() { val delay = viewModel.delay gsp = viewModel.gsp.value ?: GroundStationPosition(0.0, 0.0, 0.0) - satPassList = viewModel.passSatList.value ?: emptyList() + satPassList = viewModel.satPassList.value ?: emptyList() if (satPassList.isNotEmpty()) { satPassList = satPassList.distinctBy { it.tle } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt index 4b8a8800..90af9c99 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt @@ -115,7 +115,7 @@ class PassListFragment : Fragment() { } private fun setupObservers() { - viewModel.passSatList.observe(viewLifecycleOwner, Observer { + viewModel.satPassList.observe(viewLifecycleOwner, Observer { satPassList = it satPassAdapter.setList(satPassList) if (satPassList.isNotEmpty()) { diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt index f00e1eba..93914837 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt @@ -82,9 +82,6 @@ class PolarViewFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val delay = viewModel.delay - satPass = viewModel.passSatList.value!![args.satPassIndex] - mainActivity.supportActionBar?.title = satPass.tle.name polarViewFrame = view.findViewById(R.id.polar_view_frame) transRecycler = view.findViewById(R.id.polar_recycler) @@ -94,11 +91,22 @@ class PolarViewFragment : Fragment() { polarAltitude = view.findViewById(R.id.polar_altitude) noTransFound = view.findViewById(R.id.polar_no_trans) - polarView = PolarView(mainActivity, delay) - polarViewFrame.addView(polarView) - service.scheduleAtFixedRate({ polarView.invalidate() }, delay, delay, TimeUnit.MILLISECONDS) + viewModel.satPassList.value?.let { + val refreshRate = viewModel.delay + satPass = it[args.satPassIndex] + mainActivity.supportActionBar?.title = satPass.tle.name - setupTransRecycler() + polarView = PolarView(mainActivity, refreshRate) + polarViewFrame.addView(polarView) + service.scheduleAtFixedRate( + { polarView.invalidate() }, + refreshRate, + refreshRate, + TimeUnit.MILLISECONDS + ) + + setupTransRecycler() + } } private fun setupTransRecycler() { diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt index b6a552f5..792d43f8 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt @@ -136,9 +136,11 @@ class SatPassAdapter(val viewModel: MainViewModel) : progressBar.progress = satPass.progress itemView.setOnClickListener { - val satPassIndex = viewModel.passSatList.value!!.indexOf(satPass) - val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) - it.findNavController().navigate(action) + viewModel.satPassList.value?.let { + val satPassIndex = it.indexOf(satPass) + val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) + itemView.findNavController().navigate(action) + } } } } @@ -162,9 +164,11 @@ class SatPassAdapter(val viewModel: MainViewModel) : String.format(context.getString(R.string.pat_elevation), satPass.pass.maxEl) itemView.setOnClickListener { - val satPassIndex = viewModel.passSatList.value!!.indexOf(satPass) - val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) - it.findNavController().navigate(action) + viewModel.satPassList.value?.let { + val satPassIndex = it.indexOf(satPass) + val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) + itemView.findNavController().navigate(action) + } } } }