添加数据时的MPAndroidChart折线图回调

时间:2017-10-03 22:59:43

标签: java android charts mpandroidchart

我正在尝试用来自Http调用的数据填充折线图,我正在把所有事情都弄好,除了有时数据似乎还没有完全添加到图表中。有没有办法在数据添加到图表时获得回调?

我的代码:

        @Override
        public void onResponse(Call call, Response response) throws IOException {

            try {
                JSONObject jsonObj = new JSONObject(response.body().string());


                JSONArray price = jsonObj.getJSONArray("price");



                for(int I = 0;  I < price.length();  I++)
                {


                    JSONArray jArr = price.getJSONArray(I);
                    values.add(new Entry((float) jArr.getDouble(0), (float) jArr.getDouble(1)));


                    // create a dataset and give it a type
                    LineDataSet set1 = new LineDataSet(values, "DataSet 1");
                    set1.setAxisDependency(AxisDependency.LEFT);
                    set1.setColor(ColorTemplate.getHoloBlue());
                    set1.setValueTextColor(ColorTemplate.getHoloBlue());
                    set1.setLineWidth(1.5f);
                    set1.setDrawCircles(false);
                    set1.setDrawValues(false);
                    set1.setFillAlpha(65);
                    set1.setFillColor(ColorTemplate.getHoloBlue());
                    set1.setHighLightColor(Color.rgb(244, 117, 117));
                    set1.setDrawCircleHole(false);

                    set1.setDrawFilled(true);

                    // create a data object with the datasets
                 final LineData data = new LineData(set1);
                    data.setValueTextColor(Color.WHITE);
                    data.setValueTextSize(9f);
                    mChart.setData(data);



                }

            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
    });

1 个答案:

答案 0 :(得分:1)

问题似乎是您不断用一个点覆盖数据集。您需要在for循环之外移动LineDataSet和LineData。

    for(int I = 0;  I < price.length();  I++)
    {
        JSONArray jArr = price.getJSONArray(I);
        values.add(new Entry((float) jArr.getDouble(0), (float) jArr.getDouble(1)));
    }

    // create a dataset and give it a type
    LineDataSet set1 = new LineDataSet(values, "DataSet 1");
    set1.setAxisDependency(AxisDependency.LEFT);
    set1.setColor(ColorTemplate.getHoloBlue());
    set1.setValueTextColor(ColorTemplate.getHoloBlue());
    set1.setLineWidth(1.5f);
    set1.setDrawCircles(false);
    set1.setDrawValues(false);
    set1.setFillAlpha(65);
    set1.setFillColor(ColorTemplate.getHoloBlue());
    set1.setHighLightColor(Color.rgb(244, 117, 117));
    set1.setDrawCircleHole(false);

    set1.setDrawFilled(true);

    // create a data object with the datasets
    final LineData data = new LineData(set1);
    data.setValueTextColor(Color.WHITE);
    data.setValueTextSize(9f);
    mChart.setData(data);