ListView行查找不正确查看

时间:2017-08-21 00:44:33

标签: android listview xamarin

我有一个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方法被多次调用):

  1. 生成第0行 - &gt;情节有ID 0,convertview 0
  2. 生成第1行 - &gt;情节有ID 1,convertview 1
  3. 生成第0行 - &gt;情节有ID 0,convertview 0
  4. 生成第1行 - &gt;情节有ID 0,convertview 0
  5. 生成第0行 - &gt;情节有ID 0,convertview 0
  6. 生成第1行 - &gt;情节有ID 0,convertview 0

1 个答案:

答案 0 :(得分:0)

因此无论如何,我需要更改XML文件。最初ListView的高度为400dp,将其更改为match_parent修复此问题。见这里:https://stackoverflow.com/a/16551030/6936275