refactored MainActivity to utilize itemId in listview instead of querying with portfolio name for context menu...still not happy with this, but I did learn about .NET's lack of Anonymous Inner Classes, so that's something

This commit is contained in:
mgroves 2011-03-30 23:42:00 -04:00
parent e145282a52
commit c94d7e36cb
9 changed files with 34 additions and 30 deletions

View file

@ -1,7 +1,3 @@
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace MonoStockPortfolio.Entities
{
public class Portfolio
@ -11,11 +7,5 @@ namespace MonoStockPortfolio.Entities
public long? ID { get; private set; }
public string Name { get; set; }
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("ID", this.ID);
info.AddValue("Name", this.Name);
}
}
}

View file

@ -10,6 +10,5 @@
void EditPortfolio(int itemId);
void GotoConfig();
void ExitApplication();
int GetPortfolioIdForContextMenu(string selectedPortfolioName);
}
}

View file

@ -1,10 +1,11 @@
using System.Collections.Generic;
using MonoStockPortfolio.Entities;
namespace MonoStockPortfolio.Activites.MainScreen
{
public interface IMainView
{
void RefreshList(IList<string> portfolioNames);
void RefreshList(IList<Portfolio> portfolios);
void StartAddPortfolioActivity();
void StartViewPortfolioActivity(long portfolioId);
void StartEditPortfolioActivity(int itemId);

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Android.App;
using Android.Content;
using Android.OS;
@ -8,6 +9,7 @@ using Android.Widget;
using MonoStockPortfolio.Activites.ConfigScreen;
using MonoStockPortfolio.Activites.EditPortfolioScreen;
using MonoStockPortfolio.Activites.PortfolioScreen;
using MonoStockPortfolio.Entities;
using MonoStockPortfolio.Framework;
namespace MonoStockPortfolio.Activites.MainScreen
@ -33,9 +35,10 @@ namespace MonoStockPortfolio.Activites.MainScreen
#region IMainView implementation
public void RefreshList(IList<string> portfolioNames)
public void RefreshList(IList<Portfolio> portfolios)
{
var listAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, portfolioNames);
var portfolioLabels = portfolios.Select(p => p.Name).ToArray();
var listAdapter = new PortfolioArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, portfolios, portfolioLabels);
PortfolioListView.Adapter = listAdapter;
}
@ -82,9 +85,7 @@ namespace MonoStockPortfolio.Activites.MainScreen
base.OnCreateContextMenu(menu, v, menuInfo);
var info = (AdapterView.AdapterContextMenuInfo)menuInfo;
var selectedPortfolioName = ((TextView)info.TargetView).Text.ToS();
var id = _presenter.GetPortfolioIdForContextMenu(selectedPortfolioName);
var id = (int)info.Id;
menu.SetHeaderTitle("Options".ToJ());
menu.Add(0, id, 1, "Rename".ToJ());

View file

@ -1,7 +1,5 @@
using System.Collections.Generic;
using Android.Runtime;
using MonoStockPortfolio.Core.PortfolioRepositories;
using System.Linq;
using MonoStockPortfolio.Entities;
namespace MonoStockPortfolio.Activites.MainScreen
@ -35,8 +33,7 @@ namespace MonoStockPortfolio.Activites.MainScreen
public void RefreshPortfolioList()
{
_portfolios = null;
var portfolioNames = Portfolios.Select(p => p.Name).ToList();
_currentView.RefreshList(portfolioNames);
_currentView.RefreshList(Portfolios);
}
public void AddNewPortfolio()
@ -68,12 +65,5 @@ namespace MonoStockPortfolio.Activites.MainScreen
{
_currentView.ExitApplication();
}
public int GetPortfolioIdForContextMenu(string selectedPortfolioName)
{
var selectedPortfolio = _repo.GetPortfolioByName(selectedPortfolioName);
var id = (int)(selectedPortfolio.ID ?? -1);
return id;
}
}
}

View file

@ -0,0 +1,23 @@
using System.Collections.Generic;
using Android.Content;
using Android.Widget;
using MonoStockPortfolio.Entities;
namespace MonoStockPortfolio.Activites.MainScreen
{
public class PortfolioArrayAdapter : ArrayAdapter<string>
{
private readonly IList<Portfolio> _results;
public PortfolioArrayAdapter(Context context, int resource, IList<Portfolio> results, IList<string> labels)
: base(context, resource, labels)
{
_results = results;
}
public override long GetItemId(int position)
{
return _results[position].ID ?? -1;
}
}
}

View file

@ -10,7 +10,7 @@ namespace MonoStockPortfolio.Activites.PortfolioScreen
{
public class PositionArrayAdapter : GenericArrayAdapter<PositionResultsViewModel>
{
private IEnumerable<StockDataItem> _configItems;
private readonly IEnumerable<StockDataItem> _configItems;
public PositionArrayAdapter(Context context, IEnumerable<PositionResultsViewModel> results, IEnumerable<StockDataItem> configItems)
: base(context, results)

View file

@ -1,6 +1,5 @@
using System.Collections.Generic;
using Java.Lang;
using StringBuilder = System.Text.StringBuilder;
namespace MonoStockPortfolio.Framework
{

View file

@ -66,6 +66,7 @@
<Compile Include="Activites\EditPositionScreen\IEditPositionPresenter.cs" />
<Compile Include="Activites\EditPositionScreen\IEditPositionView.cs" />
<Compile Include="Activites\EditPositionScreen\PositionInputModel.cs" />
<Compile Include="Activites\MainScreen\PortfolioArrayAdapter.cs" />
<Compile Include="Framework\FormValidator.cs" />
<Compile Include="Activites\MainScreen\IMainPresenter.cs" />
<Compile Include="Activites\MainScreen\IMainView.cs" />