repaint Befehl bei einem a ChartEngine Diagramm

  • 1 Antworten
  • Neuester Beitrag
Diskutiere repaint Befehl bei einem a ChartEngine Diagramm im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

Patpa

Neues Mitglied
Hallo Leute,
hab in meiner App ein scatter Graph. Dieses wird über einen Menüpunkt aufgerufen. Die Daten und Einstellungen werden wieder rum in einem anderen Menüpunkt ausgewählt. Wenn ich jetzt alles einstelle und mein Diagramm aufrufe wird es wie gewünscht mit allen Einstellungen und mit den richtigen Daten angezeigt. Wenn ich aber jetzt die Einstellungen/Daten ändere und erneut das Diagramm aufrufe ändert sich gar nicht. Hab das aus dem Demoprojekt so verstanden dass ich eine abfrage starten muss.
Code:
 if(mChartView == null)
	    {
	    	mChartView = ChartFactory.getScatterChartView(this, dataset, mRenderer);
	    	Graphlayout.addView(mChartView);
		}
		else
		{
			mChartView = ChartFactory.getScatterChartView(this, dataset, mRenderer);
			mChartView.repaint();
		}
Hab mal breakpoints gesetzt und er springt wie gewünscht bei ersten mal in die if Anweisung und ab da an immer in die else Anweisung. Hab auch schon geschaut wenn ich die Einstellungen/Daten ändere werden diese in der Methode auch übernommen und funktioniert irgendwie die repaint Funktion nicht, da sich das Diagramm nicht ändert ...
Hier mal die ganze Methode ein wenig vereinfacht:
Code:
public void scatterGraphHandler (View view)
    {
		// Data 1
	    XYSeries series1 = new XYSeries(File); 
	    
	    for (int k = 0; k < X.length; k++) 
	    {
	    	series1.add(X[k], Y[k]);
	    }
		// Data 1
	    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
	    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
	 	dataset.addSeries(series1);
	 	XYSeriesRenderer renderer = new XYSeriesRenderer();
	 	// Customization  for data 1
	 	switch(Color)
	 	{
	 	case(0):
	 		renderer.setColor(Color.YELLOW);
	 		break;
	 	case(1):
	 		renderer.setColor(Color.RED);
	 		break;
	 	case(2):
	 		renderer.setColor(Color.BLACK);
	 		break;
	 	case(3):
	 		renderer.setColor(Color.CYAN);
	 		break;
	 	case(4):
	 		renderer.setColor(Color.DKGRAY);
	 		break;
	 	case(5):
	 		renderer.setColor(Color.LTGRAY);
	 		break;
	 	case(6):
	 		renderer.setColor(Color.GRAY);
	 		break;
	 	case(7):
	 		renderer.setColor(Color.GREEN);
	 		break;
	 	case(8):
	 		renderer.setColor(Color.MAGENTA);
	 		break;
	 	case(9):
	 		renderer.setColor(Color.WHITE);
	 		break;
	 	}
	 	
	 	switch(Forms)
	 	{
	 	case(0):
	 		renderer.setPointStyle(PointStyle.DIAMOND);
	 		break;
	 	case(1):
	 		renderer.setPointStyle(PointStyle.SQUARE);
	 		break;
	 	case(2):
	 		renderer.setPointStyle(PointStyle.CIRCLE);
	 		break;
	 	case(3):
	 		renderer.setPointStyle(PointStyle.POINT);
	 		break;
	 	case(4):
	 		renderer.setPointStyle(PointStyle.TRIANGLE);
	 		break;
	 	case(5):
	 		renderer.setPointStyle(PointStyle.X);
	 		break;
	 	}
	 	renderer.setLineWidth(10);
	 	if(showPoint == true)
	 	{
	 		renderer.setFillPoints(true);
	 	}
	 	
	 	mRenderer.addSeriesRenderer(renderer);
	 	 
	    if(showGrid == true)
	    {
	    	mRenderer.setShowGrid(true);
	    }
	    mRenderer.setYLabels(10);
	    mRenderer.setXLabels(10);
	    mRenderer.setScale(10);
	    if(showZoom == true)
	    {
	    	mRenderer.setZoomButtonsVisible(true);
	    }
	    
	    if(mChartView == null)
	    {
	    	mChartView = ChartFactory.getScatterChartView(this, dataset, mRenderer);
	    	Graphlayout.addView(mChartView);
		}
		else
		{
			mChartView = ChartFactory.getScatterChartView(this, dataset, mRenderer);
			mChartView.repaint();
		}
    }
Später soll der Graph aktualisiert werden sobald die Einstellungen geändert werden aber erstmal muss ich verstehen wie diese repaint Funktion funktioniert ... jemand eine Idee was ich hier falsch mache?
 
P

Patpa

Neues Mitglied
Hab es jetzt wie folgt gelöst:
Code:
mChartView = ChartFactory.getScatterChartView(this, dataset, mRenderer);
Graphlayout.removeAllViews();
Graphlayout.addView(mChartView);
Glaub zwar nicht dass das die beste Lösung ist aber funktioniert erst einmal.