我目前正在开发我的第一款Android应用。我需要可视化一些数据,我为此选择了MPAndroidChart v2.2.0(没有特殊原因,只是看起来正确)。
但是,我创建了一个包含150个数据点和150 x值的LinedDataSet,我将它们组合在一个LineData对象中并将其设置为图表的数据。基本上我只是阅读了文档并使用我自己的数据执行了这些步骤。
mChart = (LineChart) myView.findViewById(R.id.chart);
// create data
ArrayList<Entry> values = new ArrayList<Entry>();
ArrayList<String> xVals = new ArrayList<String>();
Iterator<PDSDataService.SampleProxyObject> sampleIT = sampleList.getSamplesList().iterator();
while(sampleIT.hasNext())
{
PDSDataService.SampleProxyObject sample = sampleIT.next();
Entry smp = new Entry((float)sample.getRawValues(0).getValue(),(int)sample.getSampleID());
values.add(smp);
xVals.add(String.valueOf(sample.getSampleID()));
}
LineDataSet setParam1 = new LineDataSet(values, mlistItem.toString());
LineData data = new LineData(xVals,setParam1);
mChart.setData(data);
mChart.setAutoScaleMinMaxEnabled(true);
mChart.invalidate();
现在,当我在AVD中启动应用程序时,图表显示(顺便说一句,它在片段中,如果这很重要),X轴和Y轴正确缩放,但在图表中,没有任何显示,没有线路或什么的。
我做错了什么?我无法在真实设备上测试应用程序,可能这个问题与AVD有关吗?
答案 0 :(得分:0)
我看到这个问题仍然没有答案,所以我试图自己重现。
我基本上完成了你所做的事,像你一样创建片段和图表。唯一的区别是我的数据。我也创建了150个值(只是为了测试它是否太多或者其他东西),但只是使用List<float>
来轻松。
我的代码如下所示:
LineChart mChart = (LineChart) v.findViewById(R.id.chart);
ArrayList<Entry> values = new ArrayList<Entry>();
ArrayList<String> xVals = new ArrayList<String>();
List<Float> list = new ArrayList<Float>();
list.add(0.1f); .... until i have 150 values ... list.add(2.0f);
for (int i = 0; i < list.size(); i++) {
Entry smp = new Entry(list.get(i),i);
values.add(smp);
xVals.add(String.valueOf("Test "+i));
}
LineDataSet setParam1 = new LineDataSet(values, "Anything");
LineData data = new LineData(xVals,setParam1);
mChart.setData(data);
mChart.setAutoScaleMinMaxEnabled(true);
mChart.invalidate();
对我而言,它在模拟器中有效。
您确定您的迭代器和数据是否正确?