Android 在触摸时向散点图添加点,但仅对第一次触摸事件有效(achartengine)

Android 在触摸时向散点图添加点,但仅对第一次触摸事件有效(achartengine),android,achartengine,touch-event,Android,Achartengine,Touch Event,这是我的听众() addseries功能如下所示:- private void addseries() { XYSeries series = new XYSeries("Series 1"); for(int i=0;i<size;i++) { series.add(value1[i],value2[i]); }

这是我的听众()

addseries功能如下所示:-

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);
    }
新的点显示在图表上,但仅针对第一个触摸事件,对于后续触摸事件,根本不调用touchlistener()。我使用日志检查了这一点,并且进一步删除了语句“mChart=ChartFactory.getScatterChartView(this,dataset,mrender);”每当flagtouch=1,则调用touchlistener()每次触摸时都会调用,但它没有任何用处,因为图形中没有任何变化。

试试这个

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;
            }
        });

什么是value1[i],value2[i]?
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;
            }
        });