protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource: SetContentView(Resource.Layout.Main); // Get our RecyclerView layout: mRecyclerView = FindViewById <RecyclerView>(Resource.Id.recyclerView_MainActivity); //............................................................ // Layout Manager Setup: // Use the built-in linear layout manager: mLayoutManager = new LinearLayoutManager(this); // Or use the built-in grid layout manager (two horizontal rows): //mLayoutManager = new GridLayoutManager // (this, 2, GridLayoutManager.Horizontal, false); // Plug the layout manager into the RecyclerView: mRecyclerView.SetLayoutManager(mLayoutManager); //............................................................ // Adapter Setup: // Create an adapter for the RecyclerView, and pass it the // data set (List<newsobject) to manage: mAdapter = new NewsObject_RecycleAdapter(newsObjectDisplayList); //Register the item click handler(below) with the adapter: mAdapter.ItemClick += MAdapter_ItemClick1; // Plug the adapter into the RecyclerView: mRecyclerView.SetAdapter(mAdapter); //----------------------------------- //----------------------------------- // ToolBar - Top of Screen (method 1) var toolbar = FindViewById <Toolbar>(Resource.Id.mainActivity_top_toolbar); SetSupportActionBar(toolbar); SupportActionBar.Title = GetString(Resource.String.mainActivity_top_toolbar_title); // Toolbar - Bottom of Screen (method 2) var toolbar_bottom = FindViewById <Toolbar>(Resource.Id.mainActivity_bottom_toolbar); toolbar_bottom.Title = GetString(Resource.String.mainActivity_bottom_toolbar_title); toolbar_bottom.InflateMenu(Resource.Menu.mainActivity_bottomMenu); // variables - bottom toolbar - alert dialog - market impact string[] marketImpact_titlesArray = Resources.GetStringArray(Resource.Array.MarketImpactArray); bool[] marketImpact_selectedBoolArray = new bool[marketImpact_titlesArray.Length]; // for selected checkboxes in MultiItemSelect // variables - bottom toolbar - alert dialog - currencies string[] currencies_titlesArray = Resources.GetStringArray(Resource.Array.CurrenciesArray); bool[] currencies_selectedBoolArray = new bool[currencies_titlesArray.Length]; // for selected checkboxes in MultiItemSelect // SQL only creates a new table if one doesn't already exist - it won't overwrite an existing table (?) DataAccessHelpers.CreateEmptyTable(); // set up table to store url for xml data download DataAccessHelpers.CreateTableForURLDownload(); // Display for last time data was updated - retrieved from Shared Preferences txtDataLastUpdated = FindViewById <TextView>(Resource.Id.mainActivity_txt_dataLastUpdated); RefreshTxtDataLastUpdated(); txtDataLastUpdated.Text += "\n " + GetString(Resource.String.mainActivity_txt_dataLastUpdated_pleaseSelectData); // Display all currency data (if any) from database. // This is needed here because onCreate() is called when MainActivity // is selected from a menu option (intent) in UserAlertsActivity. // - Not needed or called if the user selects onBackPress() GetAndDisplayDefaultData(); // for test data only------------------------------------------------------------ // Get testdata from xml file in Assets folder XDocument xmlTestDataFile = XDocument.Load(Assets.Open("ff_calendar_thisweek.xml")); // assign xml data file from Asset directory TO SetupData Property DataAccessHelpers.XmlTestDataFile = xmlTestDataFile; //-------------------------------------------------------------------------------- if (TimeOffsetUpdated == false) { Log.Debug("DEBUG_MainActivity_OnCreate", "\n\n\nTime offset has NOT been updated\n\n\n"); } if (TimeOffsetUpdated == true) { Log.Debug("DEBUG_MainActivity_OnCreate", "\n\n\nSUCCESS - Time offset HAS been updated\n\n\n"); //Toast.MakeText(this, GetString(Resource.String.mainActivity_txt_timeOffset_successMessage), ToastLength.Long).Show(); UpdateXML_Option(); // reset property for reuse on next occasion TimeOffsetUpdated = false; } //---------------------------------------------------- // bottom ToolBar Menu Selection toolbar_bottom.MenuItemClick += (sender, e) => { switch (e.Item.ItemId) { case Resource.Id.mainActivity_bottom_toolbar_option_ClearCurrencyData: // clear MarketImpacts & Currencies checkboxes - List<bool>'s, List<string>'s & adapter Array.Clear(marketImpact_selectedBoolArray, 0, marketImpact_selectedBoolArray.Length); Array.Clear(currencies_selectedBoolArray, 0, currencies_selectedBoolArray.Length); marketImpact_selectedList.Clear(); currencies_selectedList.Clear(); RefreshTxtDataLastUpdated(); txtDataLastUpdated.Text += "\n " + GetString(Resource.String.mainActivity_txt_dataLastUpdated_clearOptionSelected); tempNewsObjectDisplayList.Clear(); PopulateNewsObjectAdapter(); break; case Resource.Id.mainActivity_bottom_toolbar_option_displayAllCurrencyData: GetAndDisplayDefaultData(); break; case Resource.Id.mainActivity_bottom_toolbar_option_selectCurrencies: using (var dialog = new Android.Support.V7.App.AlertDialog.Builder(this)) { dialog.SetTitle(GetString(Resource.String.mainActivity_dialogOption_selectCurrencies)); dialog.SetPositiveButton(GetString(Resource.String.mainActivity_dialogOption_selectCurrencies_positiveButton), delegate { // clear list - get LINQ query result - populate list tempNewsObjectDisplayList.Clear(); tempNewsObjectDisplayList = DataAccessHelpers.LINQ_SortAllByUserSelection(marketImpact_selectedList, currencies_selectedList); // call populate adapter PopulateNewsObjectAdapter(); RefreshTxtDataLastUpdated(); DebugDisplayCurrencies(); }); // Set Multichoice Items dialog.SetMultiChoiceItems(currencies_titlesArray, currencies_selectedBoolArray, (s, eEXtra) => { int index = eEXtra.Which; bool isChecked = eEXtra.IsChecked; currencies_selectedBoolArray[index] = isChecked; // add item to list if now selected - ie isChecked is now TRUE if (isChecked) { currencies_selectedList.Add(currencies_titlesArray[index]); currencies_selectedBoolArray[index] = true; } else { currencies_selectedList.Remove(currencies_titlesArray[index]); currencies_selectedBoolArray[index] = false; } }); // check all boxes and add all items to list(s) dialog.SetNeutralButton(GetString(Resource.String.mainActivity_dialogOption_selectCurrencies_neutralButton), delegate { // clear list 1st to avoid getting duplicate entries currencies_selectedList.Clear(); // set all items in bool[] selected to TRUE for (int i = 0; i < currencies_selectedBoolArray.Length; i++) { currencies_selectedBoolArray[i] = true; currencies_selectedList.Add(currencies_titlesArray[i]); } // clear list & adapter - get LINQ query result - populate list tempNewsObjectDisplayList.Clear(); tempNewsObjectDisplayList = DataAccessHelpers.LINQ_SortAllByUserSelection(marketImpact_selectedList, currencies_selectedList); // call populate adapter PopulateNewsObjectAdapter(); DebugDisplayCurrencies(); }); // deselect all boxes & clear list dialog.SetNegativeButton(GetString(Resource.String.mainActivity_dialogOption_selectCurrencies_negativeButton), delegate { currencies_selectedList.Clear(); // clear bool[] set all items to FALSE for (int i = 0; i < currencies_selectedBoolArray.Length; i++) { currencies_selectedBoolArray[i] = false; currencies_selectedList.Remove(currencies_titlesArray[i]); } // clear list & adapter tempNewsObjectDisplayList.Clear(); PopulateNewsObjectAdapter(); DebugDisplayCurrencies(); }); dialog.Show(); } break; case Resource.Id.mainActivity_bottom_toolbar_option_debugDisplay: // displays contents of currency & marketImpact list in the Debug Output window Log.Debug("DEBUG_MainActivity", ": Currency & Market Impact Selected Display - Starts Here"); foreach (var item in currencies_selectedList) { Log.Debug("DEBUG", item); } foreach (var item in marketImpact_selectedList) { Log.Debug("DEBUG", item); } break; case Resource.Id.mainActivity_bottom_toolbar_option_selectMarketImpacts: using (var dialog = new Android.Support.V7.App.AlertDialog.Builder(this)) { dialog.SetTitle(GetString(Resource.String.mainActivity_dialogOption_selectmarketimpacts)); dialog.SetPositiveButton(GetString(Resource.String.mainActivity_dialogOption_selectmarketimpacts_positiveButton), delegate { // clear list - get LINQ query result - populate list tempNewsObjectDisplayList.Clear(); tempNewsObjectDisplayList = DataAccessHelpers.LINQ_SortAllByUserSelection(marketImpact_selectedList, currencies_selectedList); // call populate adapter PopulateNewsObjectAdapter(); RefreshTxtDataLastUpdated(); DebugDisplayMarketImpacts(); }); // Set Multichoice Items dialog.SetMultiChoiceItems(marketImpact_titlesArray, marketImpact_selectedBoolArray, (sender2, event2) => { int index = event2.Which; bool isChecked = event2.IsChecked; marketImpact_selectedBoolArray[index] = isChecked; // add item to list if now selected - ie isChecked is now TRUE if (isChecked) { marketImpact_selectedList.Add(marketImpact_titlesArray[index]); } else { marketImpact_selectedList.Remove(marketImpact_titlesArray[index]); } }); dialog.Show(); } break; //// old - not in use anymore - for demonstration purposes //case Resource.Id.mainActivity_bottom_toolbar_option_sampleData: // // get sample data (from xml file in assets folder) & pass to method // XDocument xmlTestFile2 = XDocument.Load(Assets.Open("ff_calendar_thisweek.xml")); // tempNewsObjectDisplayList.Clear(); // tempNewsObjectDisplayList = DataAccessHelpers.TestXMLDataFromAssetsFile(xmlTestFile2); // // call populate adapter // PopulateNewsObjectAdapter(); // txtDataLastUpdated.Text = GetString(Resource.String.mainActivity_txt_dataLastUpdated_warningTestDataOnlyAll); // break; //// old - not in use anymore - for demonstration purposes //case Resource.Id.mainActivity_bottom_toolbar_option_sampleLinqQuery: // // get sample data (from xml file in assets folder) & pass to method & pass to LINQ query method // XDocument xmlTestFile1 = XDocument.Load(Assets.Open("ff_calendar_thisweek.xml")); // tempNewsObjectDisplayList.Clear(); // tempNewsObjectDisplayList = DataAccessHelpers.TestLINQQueryUsingXML(xmlTestFile1); // // call populate adapter // PopulateNewsObjectAdapter(); // txtDataLastUpdated.Text = GetString(Resource.String.mainActivity_txt_dataLastUpdated_WarningTestDataOnlyQuery); // break; default: break; } }; void DebugDisplayCurrencies() { // displays currency (selected) to debug output Log.Debug("DEBUG", ": Currencies Selected Display - Starts Here"); foreach (var item in currencies_selectedList) { Log.Debug("DEBUG_MainActivity_DisplayCurrencies", item); } } void DebugDisplayMarketImpacts() { // displays marketImpacts (selected) to debug output Log.Debug("DEBUG", ": Market Impacts Selected Display - Starts Here"); foreach (var item in marketImpact_selectedList) { Log.Debug("DEBUG_MainActivity_DisplayMarketImpacts", item); } } }// end onCreate