以下是部份程式碼
//dataArraylist存放每條折線的所有資料點的x及y值
private ArrayList<GraphViewData> dataArraylist = new ArrayList<GraphViewData>();
//lineGraphSeries可存放多條折線
private List<LineGraphViewSeries> lineGraphSeries;
//將dataArraylist塞入exampleSeries
exampleSeries = new GraphViewSeries(dataArraylist);
lineGraphView.addSeries(exampleSeries);
這個Thread會每隔0.5秒寫入一筆資料,填滿十筆資料後再開始顯示折線圖,"理論上"折線圖會一直更新,但"沒有"
runOnUiThread(new Runnable() {
public void run() {
dataArraylist.add(new GraphViewData(
0.5 * (dataArraylist.size()+1),pressure_value));
if(dataArraylist.size()>10)
{
drawLineGraph();
}
}
最後Jimmy's papa的解法是,每次update UI之前就將折線物件清掉
lineGraphSeries.clear();
然後再次執行
exampleSeries = new GraphViewSeries(dataArraylist);
lineGraphView.addSeries(exampleSeries);
就OK了
ps.Jimmy's papa懷疑這是否是因為ArrayList的某些內部資料成員被設為final的關係?
沒有留言:
張貼留言