Решение, которое работает для меня это
Создайте EnhancedMvxListView
и замените MvxGridView
, используя его в пункте 1.
public class EnhancedMvxListView : MvxListView
{
public EnhancedMvxListView(Context context, IAttributeSet attrs) : base(context, attrs, new EnhancedMvxAdapter(context))
{
}
public EnhancedMvxListView(Context context, IAttributeSet attrs, IMvxAdapter adapter) : base(context, attrs, new EnhancedMvxAdapter(context))
{
}
}
, где EnhancedMvxAdapter
является следующим
public class EnhancedMvxAdapter : MvxAdapterWithChangedEvent
{
public EnhancedMvxAdapter(Context context) : base(context)
{
}
protected override View GetBindableView(View convertView, object dataContext, ViewGroup parent, int templateId)
{
templateId = GetTemplateId(dataContext);
var view = base.GetBindableView(convertView, dataContext, parent, templateId);
var context = dataContext as DayGraphItem;
view.FindViewById<TextView>(Resource.Id.graphTitle).Text = context.Title;
view.FindViewById<GraphView>(Resource.Id.graphDrawing).Data = context.Data;
return view;
}
private int GetTemplateId(object data)
{
return Resource.Layout.day_graph_item;
}
}
И, наконец, в файле в пункте 2. Я заменил
public List<string> Data { get; set; }
с
List<string> _data;
public List<string> Data
{
get
{
return _data;
}
set
{
if (value != null && value != _data)
{
_data = value;
if ((int)_canvasWidth == 0 || (int)_canvasHeight == 0)
return;
mBitmap = Bitmap.CreateBitmap((int)_canvasWidth, (int)_canvasHeight, Bitmap.Config.Argb8888);
mCanvas = new Canvas(mBitmap);
DrawTheGraph(Data);
}
}
}