2013-04-11 34 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

相关问题