视图中的achartengine切换图表类型

时间:2012-04-26 20:36:42

标签: android achartengine

我正在ViewPager中实现achartengine。持有图表的视图有一个带有7个选项的微调器,您可以在其中选择要查看的数据。其中6个选项返回PieChartView,最后一个返回TimeChartView。

PieChartView图表按预期更新和重绘,但在选择TimeChartView选项时,没有任何反应。视图保留在先前选择的PieChartView中,并且不会引发错误。我已经在应用程序的其他地方成功实现了TimeChartView,并且代码的比较和图表的数据没有抛出任何标志,所以我只能假设我的切换图形类型的方法不正确。

下面的代码提取是处理切换视图的部分;任何建议将不胜感激。

try{
        //if mChartView is already created (has data)
        //we need to invalidate it because it will only accept
        //data less than or equal to the length of data it currently has
        if(mChartView != null){
            mChartView.invalidate();
        }
        if(graphType >= 6){
            mChartView = ChartFactory.getTimeChartView(ctx, mDataset, genericXYRenderer, "MM/dd");
            genericXYRenderer.setClickEnabled(false);
        }else{
            mChartView = ChartFactory.getPieChartView(ctx, genericSeries, genericRenderer);
      genericRenderer.setClickEnabled(false);
      genericRenderer.setSelectableBuffer(10);
        }


      layout.addView(mChartView, new LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
     mChartView.repaint();
    } catch (Exception e) {
        Log.e("[appname]", "Error trying to set ChartView", e);
        m_Logger = new Logger();
    m_Logger.error(e);
}

非常感谢, 戴夫

1 个答案:

答案 0 :(得分:0)

确定。因此,PieCharts正在更新,因为mChart视图持有对PieChartView的引用,并且微调器选项以相同的格式(尽管大小不同)为它提供数组数据。

调用

mChartView.invalidate();

(我猜)刚刚清除了它所持有的数据,但仍然保留了对PieChartView的引用。选择TimeChartView选项后,阵列数据的格式与PieChartView不兼容。不知道为什么它没有抛出错误。

无论如何,解决方案是用:

替换.invalidate()调用
layout.removeView(mChartView);