更改运行时中的图形设置和数据

时间:2013-05-26 21:15:23

标签: android achartengine

我在创建应用时启动的布局中加载了图表(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);

我有一个按钮,当按下时,最初显示的图形必须改变以显示另一组数据,tittle和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();
    }    

当我测试代码时,它在第一次输入参数时运行正常,但是当我输入第二组参数时没有任何反应。如果我旋转模拟器并按下绘图按钮,则会显示新图形!但这不是主意,我们的想法是在按下按钮后重新绘制新图形。

2 个答案:

答案 0 :(得分:0)

当您按下按钮时,听起来您正在完全创建新图表。但是,您应该只修改现有图表的系列,然后调用repaint

答案 1 :(得分:0)

我想我解决了。 我没有在系列中添加新数据,我需要重新计算de y值(不会触及相同的x-vales数组)。重绘方法无效。我只是重新创建了图表,但这条线在我的方法reDraw(视图视图)

中是基础
    mylayout.removeAllViewsInLayout();

删除上一个绘图并设置新绘图。现在它很好用:))