有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

添加数据时java 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) 个答案

  1. # 1 楼答案

    问题似乎是,您经常用一个点覆盖数据集。需要将LineDataSet和LineData创建移到for循环之外

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