1
我有情節的列表視圖與具有addind數據到各個描繪的方法的ListViewAdapter:的ListView行發現不正確查看
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);
}
}
此方法使用「傳感器」的說法,以確定哪些情節數據是爲了。傳感器通過_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的作爲創建活動,這是結果(GetView方法被調用的次數的OnCreate期間一堆):
- 生成排0 - >積有ID 0,convertview 0
- 生成第1行 - >積有ID 1,convertview 1
- 生成排0 - >積有ID 0,convertview 0
- 生成第1行 - >積有ID 0, convertview 0
- 生成排0 - >積有ID爲0,convertview 0
- 生成排1 - >積有ID爲0,convertview 0
因此,你有多個視圖具有相同的ID? – John3136
是的,當我回去檢查已經生成的圖(現在有2個)的PlotView時,它們具有相同的參考。 – Lukeyb
不應該是pvPlot =(PlotView)row.findViewById(R.id.pvPlot)?你有沒有不同? – Juan