2017-06-02 56 views
1

我想讓圖表每次刷新textView中的值時都會刷新。以下是onCreate的片段。MPAndroidChart,從textView更新數據

希望有任何建議。

final ArrayList<Entry> entriesa= new ArrayList<>(); 
final LineChart lineChart = (LineChart) findViewById(R.id.chart); 
final LineDataSet dataset = new LineDataSet(entriesa,"AWAY"); 
final LineData data = new LineData(dataset); 

entriesa.add(new Entry(0,0)); 
lineChart.setData(data); 
lineChart.invalidate(); 


final TextView viewa1 = (TextView) findViewById(R.id.sa1); 
viewa1.addTextChangedListener(new TextWatcher() { 
String s=viewa1.getText().toString(); 
int iv = Integer.parseInt(s.replaceAll("[\\D]", "")); 

    public void beforeTextChanged (CharSequence s, int start, int count, int after) { 

    } 
    public void afterTextChanged (Editable s) { 

    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    entriesa.set(0,new Entry(0,iv)); 
    data.notifyDataChanged(); 
    lineChart.notifyDataSetChanged(); 
    lineChart.invalidate();} 
}); 
+0

我不知道答案,但也許進入你最後的ArrayList也是最終的?但我不確定 – Firerazzer

回答

0

而不是添加到數組列表,申報LineData內onTextChanged和附加到LineData使用addEntry的新條目。

現在,數據在每個onTextChanged上使用getData()先前保存的數據聲明,然後使用addEntry添加最新條目。這會創建一個連續的流......就像實時數據一樣。我還使用了ILineDataSet,因爲我在同一個圖表上有多個數據點。

10個數據指向視口,現在我在我的應用中有一個很好的自動滾動折線圖。

LineData data = lineChart.getData(); 
ILineDataSet set = data.getDataSetByIndex(0); 
data.addEntry(new Entry(set.getEntryCount(),iv),0); 
data.notifyDataChanged(); 
lineChart.notifyDataSetChanged(); 
lineChart.setVisibleXRangeMaximum(10); 
lineChart.moveViewToX(data.getEntryCount());