我在创建应用程序时开始的布局中加载了一个图表(achartengine 的 2 轴图表)
createData(); // is public void, creates data array for maChartView
setGraph(); // is public void, set tittles and font sizes, range of interests
mylayout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
我有一个按钮,当按下时,最初显示的图表必须更改以显示另一组数据,标题和 roi(表示感兴趣的范围,x 轴和 y 轴的值区间)
public void reDraw(View view){
createData2();
setGraph2();
mChartView.repaint(); //mChartView is public instance of GraphicalView
}
方法中涉及的所有实例和变量createData()
都是setGraph()
公共的。应用程序在模拟器中启动正常,第一张图显示良好,但是当我按下按钮时,什么也没有发生:(,我不知道为什么。
谁能给我一个见解?谢谢。
添加更多细节并修改 createData2,现在它只是重新计算 y 值。用户可以为二级多项式输入三个参数,根据这些值,相应的图形会发生变化。用户输入参数后,按下按钮触发此
public void reDraw(View view){
List<double[]> values = new ArrayList<double[]>();
//createData2() returns a new set of y-values depending on the user inputs
values = createData2();
setGraph2();
XYMultipleSeriesDataset mDataset = buildDataset(titles, x, values);
GraphicalView mChartView;
mylayout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
mylayout.addView(mChartView, params);
mChartView.repaint();
}
当我测试代码时,它在我第一次输入参数时运行正常,但是当我输入第二组参数时没有任何反应。如果我旋转模拟器并按下绘图按钮,新的图形就会出现!但这不是想法,想法是在按下按钮后重新绘制新图形。