2014-03-12 5 views
0

다음과 같이터치에 산점도에 지점을 추가하지만 첫 터치 이벤트 만하고있다 (achartengine) 여기

private GraphicalView mChart; 

mChart.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if(event.getAction() == MotionEvent.ACTION_UP) 
       { 
         xy = mChart.toRealPoint(0); 
          flagtouch =1; 
          seriestouch.add(xy[0],xy[1]); 
          addseries(); 
          view.removeView(mChart); 
          mChart=null; 
         drawgraph(ch); 
       } 
        return false; 
      } 
    }); 

addseries 기능이 내 OnTouchListener()입니다 : -

private void addseries() 
{ 
      XYSeries series = new XYSeries("Series 1"); 
       for(int i=0;i<size;i++) 
       { 
        series.add(value1[i],value2[i]); 
       } 
       dataset = new XYMultipleSeriesDataset(); 
       dataset.addSeries(series); 
       if(flagtouch==1) 
       { 
       dataset.addSeries(seriestouch); 
       } 
    } 

드로우 그래프 기능은 다음과 같습니다 : -

private void drawgraph() 
    {  

      mRenderer = new XYMultipleSeriesRenderer(); 
      XYSeriesRenderer renderer = new XYSeriesRenderer(); 
      renderer.setColor(Color.RED); 
      renderer.setPointStyle(PointStyle.CIRCLE); 
      renderer.setFillPoints(true); 
      mRenderer.addSeriesRenderer(renderer); 
      if(flagtouch==1) 
       { 
        XYSeriesRenderer renderer1 = new XYSeriesRenderer(); 
        renderer1.setColor(Color.YELLOW); 
        renderer1.setPointStyle(PointStyle.CIRCLE); 
        renderer1.setFillPoints(true); 
        mRenderer.addSeriesRenderer(renderer1); 
       } 
      mRenderer.setXTitle(colnam.get(0)); 
      mRenderer.setYTitle(colnam.get(1)); 
      mRenderer.setShowLegend(false); 
      mRenderer.setMargins(new int[]{10,45,60,0}); 
      title.setText("Scatter Plot"); 
      mChart = ChartFactory.getScatterChartView(this, dataset, mRenderer); 
      view.addView(mChart); 
    } 

새로운 점은 첫 번째 터치 이브에만 표시됩니다 nt, 이후 touch 이벤트에 대해 touchListener()가 전혀 호출되지 않음 Log를 사용하여 체크 한 후 "mChart = ChartFactory.getScatterChartView (this, dataset, mRenderer);" flagtouch = 1 일 때마다 모든 터치에서 touchlistener()가 호출되지만 그래프에서 아무 것도 변경되지 않으므로 아무 쓸모가 없습니다.

+0

무엇 값 1 [I] 1, 값 [i]는? – keshav

답변

0

는 시도이

mChart.setOnTouchListener(new OnTouchListener(){ 
      @Override 
      public boolean onTouch(View v, MotionEvent event) 
      { 
       if(event.getAction() == MotionEvent.ACTION_DOWN) 
       { 
        double[] xy = mChart.toRealPoint(0); 
       series.add(xy[0], xy[1]); 
       dataset.clear(); 
        dataset.addSeries(series); 
        mChart.repaint(); 
       } 
       return false; 
      } 
     });