2013-05-26 27 views
0

我有創建在運行時改變圖表的設置和數據

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); 

,我必須按下時按鈕時的應用程序的曲線圖中的佈局加載(achartengine的2軸圖)開始時,圖表最初表明必須改變,以顯示另一組數據,絲毫不差和ROI(意味着範圍的興趣,在x軸和y軸值的間隔)參與createData()setGraph()方法

public void reDraw(View view){ 
    createData2(); 
    setGraph2(); 
    mChartView.repaint(); //mChartView is public instance of GraphicalView 
} 

所有實例和變量是公開的。該應用程序在仿真器開始確定,第一個圖顯示很好,但是當我按下按鈕,沒有任何反應:(,我不知道爲什麼。

誰能給我一個洞察?謝謝。

添加更多細節和修改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(); 
    }  

當我測試代碼時,它在第一個我輸入參數,但輸入第二組參數時沒有任何反應。如果我旋轉模擬器並按下繪圖按鈕,新圖形出來!但這不是主意,這個想法是,新按鈕被按下後,新圖形被重新繪製。

回答

0

我想我解決了它。 我沒有向系列中添加新數據,我需要重新計算de y值(同樣的x-vales數組未被觸及)。重繪方法不起作用。我簡單地重新創建圖表,但此行中我的方法重繪是基本的(查看圖)

mylayout.removeAllViewsInLayout(); 

刪除以前的抽獎,並設置新的。現在它很好:)

0

這聽起來像是當您按下按鈕時完全創建新圖表。但是,您只應修改現有圖表的系列,然後致電repaint