private void KillFragmentObservers(OkCancelDialogFragment fragment)
 {
     if (fragment != null)
     {
         AndroidApplication.Logger.Debug(() => $"DownloadActivity: KillFragmentObservers - {fragment.Tag}");
         fragment.OkSelected     -= OkSelected;
         fragment.CancelSelected -= CancelSelected;
     }
 }
 private void CellularPrompt(object sender, Tuple <string, string, string, string> parameters)
 {
     RunOnUiThread(() =>
     {
         (string title, string message, string ok, string cancel) = parameters;
         NetworkPromptDialogFragment = OkCancelDialogFragment.NewInstance(title, message, ok, cancel, null);
         SetupFragmentObservers(NetworkPromptDialogFragment);
         NetworkPromptDialogFragment.Show(SupportFragmentManager, NETWORK_PROMPT_TAG);
     });
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            AndroidApplication = Application as AndroidApplication;
            AndroidApplication.Logger.Debug(() => $"DownloadActivity:OnCreate");

            base.OnCreate(savedInstanceState);

            // Set our view from the layout resource
            SetContentView(Resource.Layout.activity_download);

            RvDownloads     = FindViewById <EmptyRecyclerView>(Resource.Id.rvDownloads);
            NoDataView      = FindViewById <LinearLayout>(Resource.Id.layNoData);
            NoDataText      = FindViewById <TextView>(Resource.Id.txtNoData);
            ProgressSpinner = FindViewById <ProgressSpinnerView>(Resource.Id.progressBar);
            DownloadButton  = FindViewById <FloatingActionButton>(Resource.Id.fab_download);

            RvDownloads.SetLayoutManager(new LinearLayoutManager(this));
            RvDownloads.AddItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.Vertical));
            RvDownloads.SetEmptyView(NoDataView);

            var factory = AndroidApplication.IocContainer.Resolve <ViewModelFactory>();

            ViewModel = new ViewModelProvider(this, factory).Get(Java.Lang.Class.FromType(typeof(DownloadViewModel))) as DownloadViewModel;

            Adapter = new DownloadRecyclerItemAdapter(this, ViewModel);
            RvDownloads.SetAdapter(Adapter);

            Lifecycle.AddObserver(ViewModel);
            SetupViewModelObservers();

            ViewModel.Initialise();
            Task.Run(() => ViewModel.FindEpisodesToDownload());

            DownloadButton.Click += (sender, e) => ViewModel.DownloadAllPodcastsWithNetworkCheck();

            ExitPromptDialogFragment = SupportFragmentManager.FindFragmentByTag(EXIT_PROMPT_TAG) as OkCancelDialogFragment;
            SetupFragmentObservers(ExitPromptDialogFragment);
            NetworkPromptDialogFragment = SupportFragmentManager.FindFragmentByTag(NETWORK_PROMPT_TAG) as OkCancelDialogFragment;
            SetupFragmentObservers(NetworkPromptDialogFragment);

            AndroidApplication.Logger.Debug(() => $"DownloadActivity:OnCreate - end");
        }