2013-04-11 40 views
1

在當前活動中,我打印上一活動中所選股票收盤價的圖(使用Androidplot)。
在這個活動中,我有一個用戶可以覆蓋的指標列表的微調。
現在我想要使用微調器中的這個新選擇來重繪圖。
我嘗試刷新/重新加載頁面onItemSelected,但這會導致頁面保持刷新,即使不等待用戶輸入。根據Spinner中選擇的項目更新活動

public class DispGraph extends Activity { 

private XYPlot plotstock; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.graph); 

    // PRINTING SELECTED STOCK_NAME 

    Bundle bundle = getIntent().getExtras(); 
    String sname = bundle.getString("SN"); 
    TextView t = (TextView) findViewById(R.id.textView1); 
    t.setText(sname); 

    // INDICATOR LIST 

    Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.Indicators, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    String iname = spinner.getSelectedItem().toString(); 
    spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      startActivity(getIntent()); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     }}); 

    //PASSING STOCK-TICKER & INDICATOR TO PHP 



    // PLOTTING GRAPH 

    plotstock = (XYPlot) findViewById(R.id.mySimpleXYPlot); 
    Number[] series1Numbers = ind; 
    Number[] series2Numbers = closing; 

    XYSeries series1 = new SimpleXYSeries(Arrays.asList(series1Numbers),SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, iname); 
    XYSeries series2 = new SimpleXYSeries(Arrays.asList(series2Numbers),SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Closing Price"); 

    plotstock.setDomainLabel("Date"); 
    plotstock.setRangeLabel("Price"); 

    plotstock.addSeries(series1,new LineAndPointFormatter(Color.rgb(0, 200, 0), Color.rgb(0,100, 0), null, new PointLabelFormatter(Color.TRANSPARENT))); 
    plotstock.addSeries(series2,new LineAndPointFormatter(Color.rgb(0, 0, 200), Color.rgb(0, 0, 100),null, new PointLabelFormatter(Color.TRANSPARENT))); 

    plotstock.setTicksPerRangeLabel(2); 

} 
} 

回答

0

使用當前的做法,每當用戶選擇當前活動將再次啓動一個微調值,所以它會在Android棧放。很快,如果用戶改變你的微調n次,你應該按n + 1次關閉你的應用程序。這是一個非常惱人的行爲。

好了,我不知道AndroidPlot,但看它的API我找到了方法redraw.So,我想你可以試試這樣:

每當用戶選擇一個微調值,我可以做您在plotstock之後致電plotstock.redraw()

spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, 
      int arg2, long arg3) { 
     // TODO Auto-generated method stub 
     //Change the graphics value here! 
     plotstock.redraw(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

    }}); 
+0

我已經嘗試過。它仍然顯示第一個選中的'iname'(指標)和相同的圖表。 – OnDroid 2013-04-11 15:03:16

+0

你不改變你的iname變量。嘗試在onItemSelected方法內。 'iname = arg0.getItemAtPosition(arg2).toString()' – 2013-04-11 18:01:09

+1

嘿謝謝人,但這並沒有真正的工作,我只是做了一個彈出列表視圖。 – OnDroid 2013-04-17 17:16:16