2013-04-11 1 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을 알고,하지만 난 방법 redraw.So을 발견 자사의 API를보고하지, 난 당신이 그런 식으로 입어 수 있다고 생각 수정 후 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

+0

당신은 당신의 iname 변수를 변경하지 않습니다. onItemSelected 메서드 안에서 시도해보십시오. 'iname = arg0.getItemAtPosition (arg2) .toString()' –

+1

이봐 요, 고마워요.하지만 실제로 작동하지 않았어요. 그냥 목록보기를 팝업으로 만들었어요. – OnDroid