我正在使用aChartEngine和windspeed将风向绘制为TimeChartView中的xyseries(windspeed是使用左y轴的时间序列,winddir是使用右y轴的XYSeries)。
我面临的问题是,当windirection向北移动时,我的值会在0到360之间移动,在我的图表中创建一条丑陋的垂直线。我希望如果值增加到360以上,图表就会被剪裁并恢复为0.通过过滤值并在我的XYSeries中插入MathHelper.NULL_VALUE(参见代码)我设法得到我想要的图形
double windDirTemp=0;
...
if (Math.abs(windDirValues[k] - windDirTemp)>300 ){
windDirTemp = windDirValues[k];
windDirSeries.add(convertedDateinDouble[k], MathHelper.NULL_VALUE );
}
else{
windDirSeries.add(convertedDateinDouble[k], windDirValues[k]);
}
现在的问题是我的OnClickListener不再起作用了。该应用程序崩溃
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
我假设将null值插入到我的系列中会使getCurrentSeriesAndPoint无法获取SeriesIndex,并且可能与不再连接的图形有关。
我非常感谢有任何帮助来解决这个问题。我能以不同方式过滤这些值吗?是否可以尝试使用getCurrentSeriesAndPoint()替代?
谢谢, 基督教
编辑:
我正在使用achartengine-1.1.0-rc2
我的OneClickListener:
/**
* Setting a click event listener for the graph
*/
mChart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Format formatter = new SimpleDateFormat("HH:mm");
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
if (seriesSelection != null) {
int seriesIndex = seriesSelection.getSeriesIndex();
String selectedSeries = "Vindhastighet";
String unit = " m/s";
if (seriesIndex == 0)
selectedSeries = "Vindhastigheten";
else if (seriesIndex == 1)
selectedSeries = "Vindkast";
else {
selectedSeries = "Vindretningen";
unit = "\u00B0";
}
// Getting the clicked Date ( x value )
long clickedDateSeconds = (long) seriesSelection
.getXValue();
Date clickedDate = new Date(clickedDateSeconds);
String strDate = formatter.format(clickedDate);
// Getting the y value
int amount = (int) seriesSelection.getValue();
// Displaying Toast Message
Toast.makeText(
getBaseContext(),
selectedSeries + " kl " + strDate + " var "
+ amount + unit, Toast.LENGTH_LONG)
.show();
}
}
});
我的logcat:
04-02 16:05:18.575:E / AndroidRuntime(29182):致命异常:主要 04-02 16:05:18.575:E / AndroidRuntime(29182):java.lang.NullPointerException 04-02 16:05:18.575:E / AndroidRuntime(29182):at org.achartengine.chart.XYChart.getSeriesAndPointForScreenCoordinate(XYChart.java:845) 04-02 16:05:18.575:E / AndroidRuntime(29182):at org.achartengine.GraphicalView.getCurrentSeriesAndPoint(GraphicalView.java:137) 04-02 16:05:18.575:E / AndroidRuntime(29182):at com.example.hellogooglemaps.WindChartActivity $ 1.onClick(WindChartActivity.java:116) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.view.View.performClick(View.java:4211) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.view.View $ PerformClick.run(View.java:17267) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.os.Handler.handleCallback(Handler.java:615) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.os.Handler.dispatchMessage(Handler.java:92) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.os.Looper.loop(Looper.java:137) 04-02 16:05:18.575:E / AndroidRuntime(29182):在android.app.ActivityThread.main(ActivityThread.java:4898) 04-02 16:05:18.575:E / AndroidRuntime(29182):at java.lang.reflect.Method.invokeNative(Native Method) 04-02 16:05:18.575:E / AndroidRuntime(29182):at java.lang.reflect.Method.invoke(Method.java:511) 04-02 16:05:18.575:E / AndroidRuntime(29182):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1006) 04-02 16:05:18.575:E / AndroidRuntime(29182):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 04-02 16:05:18.575:E / AndroidRuntime(29182):at dalvik.system.NativeStart.main(Native Method)