【问题标题】:Duplicate pie chart data重复的饼图数据
【发布时间】:2013-11-26 04:59:58
【问题描述】:

在我的 Android 应用程序中,我正在使用 achartengine libraray 绘制饼图。单击按钮时,图表将显示在弹出窗口中。图表数据正在从 sqlite 数据库中检索。这是我的代码。

btnpieChart.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (distributionSeries != null || defaultRenderer != null) {
            distributionSeries.clear();
            defaultRenderer.removeSeriesRenderer(seriesRenderer);
        }

        SelectDBAdapter selectDBAdapter = SelectDBAdapter
                .getDBAdapterInstance(getActivity());
        try {
            selectDBAdapter.openDataBase();
            chartDataMap = selectDBAdapter
                    .getPieChartData(strBusinessUnit,
                            currentPeriod, currentYear);
        } catch (Exception e) {
            selectDBAdapter.close();
            e.printStackTrace();
        } finally {
            selectDBAdapter.close();
        }
        System.out.println("chartDataMap === "+ chartDataMap);

        if (chartDataMap.size() > 0) {
            for (Map.Entry<String, Double> entry : chartDataMap.entrySet()) {
                lstBrandNames.add(entry.getKey());
                lstAchievedVals.add(entry.getValue());
            }

            ArrayList<Double> distribution = calc_Percentage(lstAchievedVals);
            System.out.println("distribution === " + distribution);
            lstBrandNames = set_lables(lstBrandNames, distribution);

            distributionSeries = new CategorySeries(
                    "Brands - Achievement Progress");
            for (int i = 0; i < distribution.size(); i++) {
                distributionSeries.add(lstBrandNames.get(i), distribution.get(i));
            }

            defaultRenderer = new DefaultRenderer();
            defaultRenderer.setApplyBackgroundColor(true);
            defaultRenderer.setBackgroundColor(Color.WHITE);
            defaultRenderer.setLabelsTextSize(25);
            //defaultRenderer.setPanEnabled(true, false);

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

                seriesRenderer = new SimpleSeriesRenderer();
                Random rnd = new Random(); 
                int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));   
                seriesRenderer.setColor(color);
                seriesRenderer.setGradientEnabled(false);
                seriesRenderer.setDisplayChartValues(true);
                seriesRenderer.setShowLegendItem(false);

                defaultRenderer.addSeriesRenderer(seriesRenderer);
            }

            defaultRenderer.setLabelsColor(Color.BLACK);
            defaultRenderer.setChartTitle("Brands - Achievement Progress");
            defaultRenderer.setChartTitleTextSize(30);
            defaultRenderer.setZoomButtonsVisible(true);
            defaultRenderer.setShowLabels(true);

            mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
            View popupView = inflater.inflate(R.layout.pie_chart, null);

            PopupWindow popupWindow = new PopupWindow(popupView, 
                                   LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            LinearLayout layout = (LinearLayout) popupView.findViewById(R.id.chart_container);
            layout.removeAllViews();  
            layout.addView(mChartView);

            popupWindow.setFocusable(true);

            popupWindow.setBackgroundDrawable(new BitmapDrawable());

            popupWindow.showAsDropDown(popupView, 50, 50);

        }
    }
});

问题是当我一次又一次单击按钮时,图表数据是重复的饼图数据。

当我从饼图返回时,我认为 distributionSeries 和 defaultRenderer 并不清楚。并且。当我从图表窗口返回时,logcat 说:

11-26 05:15:33.163: W/InputEventReceiver(1431): Attempted to finish an input event but the input event receiver has already been disposed.

谁能帮我解决这个问题?

【问题讨论】:

    标签: java android achartengine popupwindow pie-chart


    【解决方案1】:

    在我看来,您删除了系列中的项目,但您的 lstBrandNames 没有这样做,这会导致数据重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 2019-11-06
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多