Achartengine:之前删除图和重绘新的图表 [英] Achartengine : remove chart before and redraw new chart

查看:776
本文介绍了Achartengine:之前删除图和重绘新的图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真的frustased使用achartengine图书馆,我必须删除视图重新绘制的图表,但我的图只是让新的顶级图表上,我真的很困惑...我有搜索的任何方法,但我不能得到它..这是之前我的问题:<一href=\"http://stackoverflow.com/questions/16665210/achartengine-how-to-repaint-redraw-chart\">achartengine :如何重绘/重绘图表

i really frustased to redraw chart using achartengine library, i have remove view, but my chart just make new on top chart, i really confused... i have search any method but i can't get it.. this is my question before : achartengine : how to repaint / redraw chart

如何重绘我的图表,每次我滑到我的搜索栏?

how to redraw my chart everytime i slide my seekbar?

这是我的源$ C ​​$ C:

this is my source code :

        @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        if (mChartView == null) {
   lnChart = (LinearLayout) findViewById(R.id.chart);
              mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
              mChartView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
                      double[] xy = mChartView.toRealPoint(0);
                      if (seriesSelection == null) {
                            Toast.makeText(getApplicationContext(), "tidak ada chart yang dipilih", Toast.LENGTH_SHORT)
                                .show();
                          } else {
                        Toast.makeText(
                                getApplicationContext(),
                                "Nilai " + listData.get(seriesSelection.getPointIndex()).getInuNilai()+
                                "  tanggal " + listData.get(seriesSelection.getPointIndex()).getTanggal(), 
                                Toast.LENGTH_SHORT).show();   
                          }
                    }
                  });
              lnChart.addView(mChartView, 0, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

            } 
        else {
mChartView.repaint();

            }
    }

    public void renderChart(ArrayList<NabDetail> listData) {
        // TODO Auto-generated method stub

        String seriesTitle = "";
        XYSeries series = new XYSeries(seriesTitle);
        mDataset.addSeries(series);
        mCurrentSeries = series;
        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setFillBelowLine(true);
        renderer.setFillBelowLineColor(Color.TRANSPARENT);
        renderer.setColor(Color.YELLOW);
        mRenderer.addSeriesRenderer(renderer);
        mRenderer.setInScroll(true);
        mRenderer.setShowLegend(false);
        //hide x label
        mRenderer.setXLabels(RESULT_OK);
        renderer.setFillPoints(true);
        mCurrentRenderer = renderer;


        for (int i = 0; i < listData.size(); i++) {

            mCurrentSeries.add(i,listData.get(i).getInuNilai() 
                    );

        }

    if (mChartView != null) {

        lnChart.removeViewAt(0);
            mChartView.repaint();
        }
    }
}

我已经使用 lnChart.removeViewAt(0);
                mChartView.repaint();
,但我的图表还没有重绘......所以如何重绘和之前删除图表?我在哪里必须把正确的code?

i have used lnChart.removeViewAt(0); mChartView.repaint(); but my chart still not redraw... so how to redraw and remove chart before? where am i must put the right code?

请..我希望有人能帮助我解决这个问题。

please.. i hope someone can help me to solve this problem

推荐答案

这件code应该为你工作。

This piece of code should work for you.

public void renderChart(ArrayList<NabDetail> listData) {
    // Clear your previous chart DataSet and Renderer.
    mDataSet.clear();
    mRenderer = new XYMultipleSeriesRenderer();

    String seriesTitle = "";
    XYSeries series = new XYSeries(seriesTitle);
    mDataset.addSeries(series);
    mCurrentSeries = series;
    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setFillBelowLine(true);
    renderer.setFillBelowLineColor(Color.TRANSPARENT);
    renderer.setColor(Color.YELLOW);
    mRenderer.addSeriesRenderer(renderer);
    mRenderer.setInScroll(true);
    mRenderer.setShowLegend(false);
    //hide x label
    mRenderer.setXLabels(RESULT_OK);
    renderer.setFillPoints(true);
    mCurrentRenderer = renderer;

    for (int i = 0; i < listData.size(); i++) {
        mCurrentSeries.add(i,listData.get(i).getInuNilai());
    }

    // repaint your chart with new mDataSet and mRenderer.
    repaint();
}

private void repaint() {
    lnChart = (LinearLayout) findViewById(R.id.chart);

    if (mChartView != null) {
        lnChart.removeView(mChartView);
    }

    mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);

    lnChart.addView(mChartView, 0, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}

这篇关于Achartengine:之前删除图和重绘新的图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆