2013-10-03 66 views
2

我認爲這是非常基本的,但我找不到解決方案。 我有這樣的事情:androidplot - 我如何清空SimpleXYSeries

public SimpleXYSeries historySeries; 
historySeries = new SimpleXYSeries("something"); 

然後在後臺線程我一些數據添加到系列:

historySeries.addLast(newRoll, newAzimuth); 

的問題是,我怎麼能輕易剛剛從該系列中刪除所有數據項,需要的時候?

現在,我有這樣的事情:

public void initSeries() { 
     historyPlot.removeSeries(historySeries); 
     historySeries = null; 
     historyPlot.clear(); 
     historySeries = new SimpleXYSeries("something"); 
     historyPlot.addSeries(historySeries, lpf); 
    } 

它的工作原理,但是當我再次做addSeries圖形閃爍。

編輯:

我已讓我自己SimpleXYSeries的版本解決的問題,並增加了一個方法:

public void removeXY() { 
     lock.writeLock().lock(); 
     try { 
      xVals.clear(); 
      yVals.clear(); 
     } finally { 
      lock.writeLock().unlock(); 
     } 
    } 

回答

0

我一直用明確的()來刪除的情節和從未有過的圖閃爍。你只是在模擬器上還是在真實設備上嘗試這個?

我還發現這些方法:

historyPlot.getSeriesSet.removeAll(historySeries); 
historyPlot.removeMarkers(); 

我不知道這是否是一個閃爍

+0

我在真實設備上測試它。自從我解決了「閃爍」問題以來,當然是我的錯,我擴展了LineAndPointFormatter並犯了一些錯誤。對我來說,唯一的解決方案是創建SimpleXYSeries的修改版本,並添加清除xVals和yVals的方法。 – netpork

+0

很高興你知道這個問題。你應該回答你自己的問題並接受答案,這樣問題就會被關閉。 – buczek

0

奇怪的是,有內置SimpleXYSeries沒有clear()removeAll()功能更好。正如您已經提到的,最好的解決方法是修改源代碼以添加該功能。但是,對於那些不願意這樣做的人,您可以撥打removeLast(),直到從系列中刪除所有條目。到目前爲止,它對我來說工作得很好。

while (series.size() > 0) { 
    series.removeLast(); 
} 
+1

將在下一個版本的Androidplot中添加clear()方法,以及基礎數據列表的訪問器,以便希望未來擴展SimpleXYSeries的用戶更容易:-) – Nick