Как показать несколько данных внутри круговой диаграммы в MpAndroidchart из списка массивов Json? - PullRequest
0 голосов
/ 06 октября 2019

Вот мой ответ Json с сервера:

{
    "OpdIpdComparison": [
        {
            "Year": 2019,
            "Month": 1,
            "MonthString": "January",
            "IPD": 35,
            "OPD": 3,
            "Percent": "12.0"
        },
        {
            "Year": 2019,
            "Month": 2,
            "MonthString": "February",
            "IPD": 40,
            "OPD": 0,
            "Percent": "Infinity"
        },
        {
            "Year": 2019,
            "Month": 3,
            "MonthString": "March",
            "IPD": 53,
            "OPD": 0,
            "Percent": "Infinity"
        }

    ]
}

Мой основной класс для извлечения моих данных Jason:

открытый классOpdIpdAnalysis расширяет AppCompatActivity {

ApiService service;
TokenManager tokenManager;
Call<ModelResponse> call;

private ListView mListView;

 //GraphView
private PieChart mPieChart;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_opd_ipd_analysis);

    mListView = findViewById(R.id.mListView);

    //GraphView casting
    mPieChart = (PieChart)findViewById(R.id.pieChart);

        //code for retrofit call

           call = service.getAllOpdIpdData();
           call.enqueue(new Callback<ModelResponse>() {
            @Override
            public void onResponse(Call<ModelResponse> call, Response<ModelResponse> response) {
                myProgressBar.setVisibility(View.GONE);
                if (response.isSuccessful() && response.body() != null) {
                    updatUI(response.body().getOpdIpdComparison());

                    List<PieEntry> pieEntries = new ArrayList<>();

                    for (OpdIpdModel opdIpdModel : response.body().getOpdIpdComparison()){

                        pieEntries.add(new PieEntry(opdIpdModel.getiPD(), opdIpdModel.getMonthString(), opdIpdModel.getoPD()));
                    }

                    mPieChart.setDrawHoleEnabled(false);

                    mPieChart.setVisibility(View.VISIBLE);
                    mPieChart.animateXY(4000,3000);

                    PieDataSet pieDataSet = new PieDataSet(pieEntries, "Growth per month");
                    pieDataSet.setSliceSpace(3f);
                    pieDataSet.setSelectionShift(5f);
                    pieDataSet.setColors(ColorTemplate.JOYFUL_COLORS);

                    PieData pieData = new PieData(pieDataSet);
                    pieData.setValueTextSize(10f);
                    pieData.setValueTextColor(Color.YELLOW);

                    mPieChart.setData(pieData);

                    Description description = new Description();
                    description.setText("Growth rate per month");
                    description.setTextSize(12);
                    description.setTextColor(Color.BLACK);
                    mPieChart.setDescription(description);
                    mPieChart.invalidate();

                }
            }

            @Override
            public void onFailure(Call<ModelResponse> call, Throwable t) {
                myProgressBar.setVisibility(View.GONE);

                Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Network Status: " + t.getMessage(), Snackbar.LENGTH_LONG);
                View snackbarView = snackbar.getView();
                snackbarView.setBackgroundColor(Color.parseColor("#e64a19"));
                TextView tv = (TextView) snackbarView.findViewById(R.id.snackbar_text);
                tv.setTextColor(Color.WHITE);
                snackbar.show();
            }
        });

}

Теперь моя круговая диаграмма показывает только значение ipd, а не значение opd

Есть ли способпоказать несколько данных в pieChart?

Мой вопрос: как я могу получить оба значения и показать их внутри pieChart?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...