Achartengine repaint
-
26-10-2019 - |
سؤال
I have one data connection in webservice. In Assynctask i get data every 5 second. After the data arrived i make new dataset and becuse the mChartView living i just repaint. And here comming my problem. The Line chart repaint not regenerate the chart just make one new top of the last. And of course 2-3 minutes out of menmory :(
Here my code:
class GetData extends AsyncTask<Void, String, Void> {
private ArrayList<String> Alldata = new ArrayList<String>();
public XYMultipleSeriesDataset datasetOut;
public XYMultipleSeriesRenderer mRendererOut;
@Override
protected Void doInBackground(Void... unused) {
Alldata.clear();
Alldata = DataFromWeb.getChartDataNew("&name=XXX", "XXX");
return (null);
}
@Override
protected void onPostExecute(Void unused) {
datasetOut = CCChart.getDataSet(getBaseContext(), Alldata);
mRendererOut = CCChart.getRendererPortrait(getBaseContext());
Log.d("Debug", "alldatasize: " + Alldata.size());
Log.d("Debug", "dataset " + datasetOut.getSeriesCount() );
if (mChartView != null) {
mChartView.repaint();
Log.v("CC_trace", "CCChartRepaint");
} else {
mChartView = ChartFactory.getLineChartView(getBaseContext(), datasetOut , mRendererOut);
layout.addView(mChartView, new LayoutParams(
LayoutParams.WRAP_CONTENT, getHeight()));
Log.v("CC_trace", "CCChartGenerate");
}
}
}
MAybe im not call in good place the repaint() :)
Chart Image 1
thx the help...
المحلول
In mine I never call repaint. I just recreate the old one
so like this:
@Override
protected void onPostExecute(Void unused) {
datasetOut = CCChart.getDataSet(getBaseContext(), Alldata);
mRendererOut = CCChart.getRendererPortrait(getBaseContext());
Log.d("Debug", "alldatasize: " + Alldata.size());
Log.d("Debug", "dataset " + datasetOut.getSeriesCount() );
mChartView = ChartFactory.getLineChartView(getBaseContext(), datasetOut , mRendererOut);
layout.removeAllViews();
layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT, getHeight()));
Log.v("CC_trace", "CCChartGenerate");
}
لا تنتمي إلى StackOverflow