我有一个ListViewAdapter的列表视图,它有一个addind数据到单个图的方法:
public void AddData(Sensor sensor, float[] data)
{
double[] dat = Array.ConvertAll(data, x => (double)x);
Plot plot;
if (_PlotMap.TryGetValue(sensor, out plot))
{
plot.AddData(dat);
}
}
此方法使用'Sensor'参数来确定数据的用途图。传感器通过_PlotMap映射到绘图。生成_PlotMap时会将每行添加到列表中,如下所示:
public override View GetView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
PlotView pvPlot;
if (row == null) row = LayoutInflater.From(_Context).Inflate(Resource.Layout.MonitorPlotLineListViewRow, null, false);
pvPlot = row.FindViewById<PlotView>(Resource.Id.pvPlot);
var linePlot = new LinePlot(_Context, pvPlot, _Sensors[position], _Application.XAxisWidthSeconds, _panning, false, _frameTime, 1000);
if (!_PlotMap.ContainsKey(_Sensors[position]))
_PlotMap.TryAdd(_Sensors[position], linePlot);
return row;
}
我的问题在这里:
pvPlot = row.FindViewById<PlotView>(Resource.Id.pvPlot);
它随机返回plotviews,不一定是正在生成的行的plotview。提前谢谢。
修改 我在创建活动时看到了ID,这就是结果(在OnCreate期间,GetView方法被多次调用):
答案 0 :(得分:0)
因此无论如何,我需要更改XML文件。最初ListView的高度为400dp,将其更改为match_parent修复此问题。见这里:https://stackoverflow.com/a/16551030/6936275