2013-06-05 17 views
5

Ho creato un grafico dal mio database con androidplot, ma quando ho ripristinato il database con il pulsante, l'aggiornamento del dosnt del grafico, come posso aggiornare il grafico senza ricreare l'attività?come aggiornare il grafico in androidplot

public class Overview extends Activity { 
Number[] seriesOfNumbers; 
private XYPlot mySimpleXYPlot; 
// double totalprofitd; 
private BetsDbAdapter dbHelper; 
TextView NBtext; 
TextView TOtext; 
TextView TPtext; 
TextView ROItext; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.c_overview); 

    dbHelper = new BetsDbAdapter(this); 
    TOtext = (TextView) findViewById(R.id.turnover); 
    TPtext = (TextView) findViewById(R.id.totalprofit); 
    NBtext = (TextView) findViewById(R.id.numberOfBet); 
    ROItext = (TextView) findViewById(R.id.roi); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.android_tab_layout, menu); 
    return true; 
} 

public void resetClick(View v) { 
    dbHelper.open(); 
    dbHelper.deleteDatabase(); 
    dbHelper.close(); 
    CalculateProfit(); 
    graph(); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    CalculateProfit(); 
    graph(); 
} 

public void CalculateProfit() { 
    dbHelper.open(); 
    List<String> tip = dbHelper.getTip(); 
    List<String> betamount = dbHelper.getBetAmount(); 
    ArrayList<String> sbodds = dbHelper.getSBodds(); 
    dbHelper.close(); 

    int NumberOfBets = tip.size(); 
    double turnover = 0; 
    double ROI = 0; 
    double totalprofit = 0; 
    double profit = 0; 
    seriesOfNumbers = new Number[NumberOfBets]; 
    for (int i = 0; i < NumberOfBets; i++) { 
     String WLV = tip.get(i); 
     String arrpct[] = WLV.split(" ", 2); 
     String WLV1 = arrpct[0]; 

     if (WLV1.equals("W")) { 
      profit = Double.parseDouble(betamount.get(i).replaceAll(",", 
        ".")) 
        * (Double.parseDouble(sbodds.get(i)) - 1); 
     } 

     else if (WLV1.equals("L")) { 
      profit = -Double.parseDouble(betamount.get(i).replaceAll(",", 
        ".")); 
     } else { 
      profit = 0; 
     } 
     //Add total turnover 
     turnover += Double.parseDouble(betamount.get(i).replaceAll(",", ".")); 
     //Add total profit 
     totalprofit += profit; 
     //For the graph 
     seriesOfNumbers[i] = totalprofit; 
    } 
    ROI = ((turnover + totalprofit)/turnover) * 100; 
    TPtext.setText(new DecimalFormat("##.##").format(totalprofit)); 
    TOtext.setText(new DecimalFormat("##.##").format(turnover)); 
    NBtext.setText(Integer.toString(NumberOfBets)); 
    ROItext.setText(new DecimalFormat("##.##").format(ROI)); 
} 

public void graph() { 
    dbHelper.open(); 
    // initialize our XYPlot reference: 
    mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 

    // Turn the above arrays into XYSeries': 
    XYSeries series1 = new SimpleXYSeries(Arrays.asList(seriesOfNumbers), 
    // SimpleXYSeries takes a List so turn our array into a list 
      SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, 
      // Y_VALS_ONLY means use the element index as the x value 
      "Series1"); // Set the display title of the series 

    // Create a formatter to use for drawing a series using 
    // LineAndPointRenderer: 
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
      Color.rgb(0, 200, 0), // line color 
      null, // point color 
      Color.rgb(0, 200, 0)); // fill color (none) 

    // add a new series' to the xyplot: 
    mySimpleXYPlot.addSeries(series1, series1Format); 

    // reduce the number of range labels 
    mySimpleXYPlot.setTicksPerRangeLabel(3); 

    // by default, AndroidPlot displays developer guides to aid in laying 
    // out your plot. 
    // To get rid of them call disableAllMarkup(): 
    mySimpleXYPlot.disableAllMarkup(); 
    dbHelper.close(); 
} 

}

Non so se la sua importanza, ma qui è il mio:

c_overview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/Profit_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="6" 
       android:text="Profit:" /> 

      <TextView 
       android:id="@+id/ROI_text" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="6" 
       android:text="ROI:" /> 

      <TextView 
       android:id="@+id/Bet_Counter_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="6" 
       android:text="No. of Bets:" /> 

      <TextView 
       android:id="@+id/Turnover_text" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="6" 
       android:text="Turnover:" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="130dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.75" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/totalprofit" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" 
       android:text="total profit" /> 

      <TextView 
       android:id="@+id/roi" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" 
       android:text="Return Of Interest" /> 

      <TextView 
       android:id="@+id/numberOfBet" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="number of bets" /> 

      <TextView 
       android:id="@+id/turnover" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" 
       android:text="Turnover" /> 
     </LinearLayout> 

     <Button 
      android:id="@+id/reset" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="resetClick" 
      android:text="Reset" /> 

    </LinearLayout> 

    <com.androidplot.xy.XYPlot 
      android:id="@+id/mySimpleXYPlot" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginTop="10px" 
      android:layout_marginLeft="10px" 
      android:layout_marginRight="10px" 
      title="A Simple XYPlot Example"/> 



</LinearLayout> 

risposta

13

ho trovato 2 funzioni utilizzabili: chiaro e ridisegnare, così ora la sua funzionante:

CalculateProfit(); 
mySimpleXYPlot.clear(); 
graph();   
mySimpleXYPlot.redraw(); 
0

Grafico Android con AndroidPlot Tutorial

In questo grafico Android con AndroidPlot Tutorial impariamo come creare un grafico in un'app Android utilizzando la libreria AndroidPlot. La creazione di un grafico in Android è semplificata da AndroidPlot, solo che abbiamo bisogno di conoscere un paio di classi. Come passare i valori a tali classi di tracciare il grafico e poi come ...

Per saperne di più: http://latest-tutorial.com/2014/03/12/android-chart-using-androidplot-tutorial/

0

Prima di avviare u tracciare il grafico basta usare la seguente funzione plot.clear(); E rimuovere anche la serie plot.removeSeries (xLabels [i]); dove xLabels è il valore dell'asse x

Problemi correlati